Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Параметры, связанные с коммуникацией
Разделы на этой странице:
- ConnectionTimeout
- connection_timeout
- DummyPacketlnterval
- dummy_packet_interval
- RemoteServiceName
- RemoteServicePort
- RemoteAuxPort
- RemoteBindAddress
- TcpRemoteBufferSize
- Параметры, специфичные для POSIXRemoteFileOpenAbility
- TcpNoNagle
- tcp_no_nagle
- Параметры, специфичные для WindowsCreatelnternalWindow
- DeadThreadsCollection
- GuardianOption
- IpcMapSize
- server_client_mapping
- IpcName
- MaxUnflushed Writes
- MaxUnflushed Write Time
- PrioritySwitchDelay
- PriorityBoost
- ProcessPriorityLevel
- server_priority_ class
- RemotePipeName
- server_working_size_max и server_working_size_min
- Параметры совместимостиCompleteBooleanEvaluation
- OldParameterOrdering
- Параметры, связанные с внешними объектами
Параметры, связанные с коммуникацией
ConnectionTimeout
Версия 1.5 и более поздние.
connection_timeout
Версии, предшествующие Firebird 1.5.
Задает количество секунд ожидания до прекращения попытки соединения. Значение по умолчанию 180.
DummyPacketlnterval
Версия 1.5 и более поздние.
dummy_packet_interval
Версии, предшествующие Firebird 1.5.
Это старый параметр InterBase, устанавливающий количество секунд (целое число), в течение которых сервер должен ждать молчания клиентского соединения, прежде чем отправить пустой пакет для подтверждения запроса. По умолчанию устанавливается в 0 (отключено) для Firebird 1.5 и в 60 для Firebird 1.0.x.
! ! !
ВНИМАНИЕ! Этот параметр не должен использоваться в Windows совсем, и он не рекомендуется для других операционных систем[139].
. ! .
В Firebird 1.0.x откройте iboonfig (Windows) или iso config (другие системы) и добавьте строку:
dummy_packet_interval=0
Обычно Firebird отслеживает активные соединения с использованием режима разъема SO_KEEPALIVE с периодом по умолчанию 2 часа. Если вам нужно изменить период ожидания, подрегулируйте установки сервера[140]:
* для сервера POSIX измените содержание proc/sys/net/ipv4/tcp_keepalive_*;
* для Windows просмотрите инструкции в статье на http://support.microsoft.com /default.aspx?kbid=140325.
RemoteServiceName
Версия 1.5 и более поздние.
Это имя сервиса на сервере. Если файл firebird.conf включен только в клиентскую инсталляцию (см. главу 7), то клиент при необходимости будет отыскивать в нем имя сервиса. См. также RemoteServicePort (описан в следующем разделе). Более подробную информацию см. в разд. "Конфигурирования порта сервиса" главы 2.
Default = gds_db
RemoteServicePort
Версия 1.5 и более поздние.
Этот параметр и RemoteServiceName обеспечивают возможность перекрытия либо имени сервиса TCP/IP, либо номера порта TCP/IP, используемых для прослушивания запросов клиентов к соединению с базой данных, если один из них отличается от значения по умолчанию при инсталляции (gds_db и порт 3050).
Изменяйте одну запись, но не обе. RemoteServiceName проверяется первым на соответствие записи в файле services. Если есть соответствие, то конфигурируется номер порта для RemoteServicePort. Если нет соответствия, то используется номер порта по умолчанию при инсталляции - 3050.
! ! !
ПРИМЕЧАНИЕ. Если номер порта указывается в строке соединения TCP/IP, то он всегда имеет приоритет перед RemoteServicePort.
. ! .
RemoteAuxPort
Версия 1.5 и более поздние.
Унаследованное от InterBase поведение, связанное с передачей сообщений о событиях по сети через случайно выбранные порты TCP/IP, показывает, что в некоторых
типах инсталляций это является источником постоянных ошибок сети и конфликтов средств межсетевой защиты (firewall), иногда приводит к краху сервера. Этот параметр позволяет сконфигурировать один порт TCP для всего трафика сообщения о событиях.
Значение инсталляции по умолчанию (0) сохраняет традиционный случайный выбор порта. Для назначения одного порта для сообщений о событиях используйте целое число, которое задает номер доступного порта.
RemoteBindAddress
Версия 1.5 и более поздние.
По умолчанию клиенты могут соединяться из любого сетевого интерфейса, для которого сервер поддерживает трафик. Этот параметр позволяет вам связывать сервис Firebird с приходящими запросами через один IP-адрес (т. е. сетевую карту) и отклонять запросы на соединение от любых других сетевых интерфейсов. Это позволяет разрешать проблемы в некоторых сетях, где сервер используется в нескольких подсетях.
Это строка в допустимом формате IP с использованием разделительных точек. Значением по умолчанию является пустая строка.
TcpRemoteBufferSize
Версия 1.5 и более поздние.
Ядро сервера вначале считывает клиента и может отправить некоторые строки данных в одном пакете. Чем больше размер пакета, тем большая строка отправляется за одну пересылку. Используйте этот параметр (с осторожностью и полным пониманием его воздействия на производительность сети), если вам нужно увеличить или уменьшить размер пакета TCP/IP. Параметр воздействует и на сервер, и на клиента.
Значением является целое число (размер пакета в байтах) в диапазоне от 1448 до 32 767. Значением по умолчанию при инсталляции является 8192.
Параметры, специфичные для POSIX
RemoteFileOpenAbility
Версия 1.5 и выше, только для POSIX.
! ! !
ВНИМАНИЕ! Используйте RemoteFileOpenAbility только с особой осторожностью.
. ! .
Это логический параметр, который, будучи установленным в True, позволяет серверу открывать файлы, которые расположены в монтированных разделах сетевой файловой системы (Networked FileSystem, NFS). Он предназначен для создания оперативных копий на накопителях в NFS, которые имеют высокую доступность. Он не является безопасным для файлов базы данных - возможно, за исключением баз данных только для чтения - потому что эта файловая система находится вне контроля локальной файловой системы. Он не должен использоваться для целей открытия любых баз данных для чтения/записи, чья выживаемость имеет для вас значение.
TcpNoNagle
Версия 1.5 и выше, только для Linux.
tcp_no_nagle
Версии до Firebird 1.5, только для Linux.
По умолчанию в Linux библиотека sockets будет минимизировать отправку данных путем буферизации перед фактической пересылкой данных, используя при этом внутренний алгоритм (реализованный как режим TCP_NODELAY при канальном соединении), называемый алгоритмом Nagle. Он был разработан для исключения проблем с пересылкой большого числа малых пакетов в медленных сетях.
По умолчанию параметр TCP NODELAY включен (значение 0) при инсталляции в Linux Суперсервера Firebird. В медленных сетях его отключение может увеличить скорость. Остерегайтесь двойного отрицания - устанавливайте значение параметра в True для отключения TCP_NODELAY и В False для его включения[141].
В версиях 1.5 и выше эта возможность активна только для Суперсервера.
Параметры, специфичные для Windows
CreatelnternalWindow
Версия 1.5 и выше, только для Windows.
Протокол "локального Windows" использует скрытое окно для IPC (InterProcessor Communication, межпроцессорная связь) между локальным клиентом и сервером. Это окно IPC создается при запуске сервера, когда CreatelnternalWindow имеет значение True (1, по умолчанию). Установите его в 0 (отключен) для запуска сервера без этого окна и, следовательно, без локального протокола. При отключенном локальном протоколе возможен одновременный запуск множества серверов.
DeadThreadsCollection
Версия 1.5 и выше, только для Windows.
Задается для планировщика потоков в Windows. Этот целочисленный параметр устанавливает величину приоритета переключения циклов (см. разд. "PrioritySwitchDeloy"), которое выполняется планировщиком перед разрушением (или закрытием) потока.
Немедленное разрушение (или закрытие) рабочих потоков может потребовать семафоров и блокирующих вызовов, создающих значительные непроизводительные издержки. Вместо этого планировщик потоков поддерживает потоки в пуле. Когда поток завершит свою задачу, он отмечается как свободный. Незанятый поток разрушается (или закрывается) после n итераций цикла планировщика, где n - значение параметра DeadThreadsCoilection.
Для сервера, обрабатывающего очень большое количество соединений, - сотни и более - значение этого параметра должно быть больше его значения по умолчанию 50.
GuardianOption
Версия 1.5 и выше, только для Windows.
Этот логический параметр используется на серверах Windows для задания, будет ли Guardian перезапускать сервер каждый раз, когда он завершится аварийно. Значение по умолчанию при инсталляции требует этого (1 = True). Для отмены рестарта отключите этот параметр (0 = False).
IpcMapSize
Версия 1.5 и выше.
server_client_mapping
Версии, предшествующие Firebird 1.5.
Это размер в байтах клиентской порции отображаемого в памяти файла, используемого для IPC в модели соединения, применяемой для "локального соединения Windows". Параметр не имеет эквивалента для других платформ и не оказывает никакого влияния на сетевые соединения. Значением является целое число от 1024 до 8192. Значение по умолчанию 4096.
Увеличение значения может улучшить производительность при поиске очень большого набора строк данных, такого как графические BLOB.
! ! !
ПРИМЕЧАНИЕ. Если Firebird выполняется как приложение, эта установка также может быть изменена в диалоге системной панели Guardian. Остановите и запустите сервер, чтобы новые установки начали действовать.
. ! .
IpcName
Версия 1.5 и выше, только для платформ Windows.
Значение по умолчанию FirebirdlPI.
Это имя разделяемой области памяти, используемой как транспортный канал в локальном протоколе.
Значение по умолчанию в версии 1.5 FirebirdiPi не совместимо ни со старыми версиями Firebird, ни с InterBase. При необходимости используйте значение interBaseiPi для сохранения совместимости с существующим приложением, которое ссылается на разделяемую память (пространство IPC) по имени.
MaxUnflushed Writes
Версия 1.5 и выше.
Применимо только для серверов Windows.
Этот параметр был введен в версии 1.5 для обработки ошибок в операционных системах сервера Windows, из-за которых асинхронный вывод никогда не записывался на диск, за исключением случая, когда сервер Firebird закрывался. (Асинхронный вывод не поддерживается в Windows 9х и ME.) Поэтому в системах 24/7 (работающих 24 часа в сутки, 7 дней в неделю) асинхронный вывод вообще никогда не выполнялся.
Этот параметр определяет, как часто требующие вывода страницы будут записываться на диск при отключенном режиме Forced Writes (включен асинхронный вывод). Его значением является целое число, которое определяет максимальное количество требующих вывода страниц, при достижении которого отмечается необходимость вывода после того, как в следующий раз будет подтверждена транзакция. Значение по умолчанию 100 для инсталляций Windows и -1 (отключено) для всех других платформ.
Если конец цикла MaxunfiushedwriteTime (см. следующий раздел) будет достигнут до того, как счетчик ожидающих вывода страниц достигнет значения Maxunfiushedwrites, флаг вывода будет отмечен немедленно, а счетчик количества ожидающих вывода страниц будет установлен в ноль.
MaxUnflushed Write Time
Версия 1.5 и выше.
Применимо только для серверов Windows.
Этот параметр определяет максимальное значение промежутка времени, через который ожидающие вывода страницы при асинхронном выводе будут записываться на диск при отключенном режиме Forced Writes (включен асинхронный вывод). Его значением является целое число, которое задает интервал в секундах между последним выводом на диск и установкой флага для выполнения вывода после того, как в следующий раз будет подтверждена транзакция. Значение по умолчанию 5 секунд для инсталляций Windows и - 1 (отключено) для всех других платформ.
PrioritySwitchDelay
Версия 1.5 и выше, только для Windows.
Устанавливается для планировщика потоков в Windows. Целое число задает время в миллисекундах, которое должно пройти, прежде чем приоритет неактивного потока будет уменьшен до LOW (низкий) или приоритет активного потока будет увеличен до HIGH (высокий). Одна итерация по этой последовательности переключений представляет один цикл планировщика потоков.
Значением по умолчанию является 100 миллисекунд; это время выбрано на основании экспериментов с процессорами Intel PIII/P4. Для процессоров с меньшим быстродействием потребуется большее время задержки.
PriorityBoost
Версия 1.5 и выше, только для Windows.
Это целое число задает количество дополнительных циклов, предоставляемых потоку, когда его приоритет переключается на HIGH. Значение по умолчанию при инсталляции 5.
ProcessPriorityLevel
Версия 1.5 и выше, только для платформ Windows.
Это параметр для установки приоритета уровень/класс для серверного процесса; он заменяет параметр server_priority_ciass в версиях, предшествующих 1.5, новой реализацией.
Значением параметра является целое число:
* 0: обычный приоритет;
* положительное значение: высокий приоритет (то же самое, что и переключатель -B[oostPriority] в режимах configure и start у instsvc.exe);
* отрицательное значение: низкий приоритет.
! ! !
ПРИМЕЧАНИЕ. Все изменения этого значения должны быть тщательно протестированы, чтобы убедиться, что они действительно приводят к соответствующей реакции сервера на запросы.
. ! .
server_priority_ class
Версии, предшествующие Firebird 1.5.
Этот параметр назначает класс приоритета для сервиса Firebird только в Windows NT или Windows 2000. Возможными значениями являются: 1 = низкий приоритет, 2 = высокий приоритет. Значение по умолчанию 1.
RemotePipeName
Версия 1.5 и выше, применим только на платформах Windows для соединений именованных каналов (named pipes).
Этот строковый параметр является именем канала, используемого в качестве транспортного канала для сетей Windows именованных каналов. Именованный канал является эквивалентом номера порта в TCP/IP. Значение по умолчанию, interbas, совместимо с предыдущими реализациями Firebird и с InterBase.
server_working_size_max и server_working_size_min
Версии, предшествующие Firebird 1.5.
Это два устаревших параметра, унаследованные от предыдущих версий Firebird. Сейчас они не поддерживаются и исключены из firebird.conf.
Параметры совместимости
CompleteBooleanEvaluation
Версия 1.5 и выше.
Устанавливает метод вычисления логических значений (полный или сокращенный). Значение по умолчанию (0 = False) задает сокращенное вычисление выражений, содержащих предикаты AND или OR, при котором возвращается результат "истина" или "ложь", когда дальнейшее вычисление оставшейся части выражения уже не повлияет на результат.
При весьма редких (обычно исключаемых) условиях может произойти такое, что операция внутри условий AND или OR, которая не будет вычисляться при сокращенном поведении, может потенциально повлиять на окончательный результат. Если у вас такая беда, и вы получили приложение, которое использует такие характеристики в логике SQL, вам понадобится использование этого параметра для обеспечения полного вычисления, пока у вас не появится удобный случай хирургического вмешательства в эту ситуацию. Это параметр логического типа.
! ! !
ВНИМАНИЕ! Не рассматривайте этот факт как флаг, который влияет на все логические вычисления, выполняемые в любых базах данных на сервере.
. ! .
OldParameterOrdering
Версия 1.5 и выше.
Версия 1.5 учитывает старую ошибку InterBase, которая приводит к тому, что выходные параметры возвращаются клиенту в структуре XSQLDA в порядке, вызывающем у пользователя аллергию. Эта ошибка сохранялась столь долго, что многие существующие приложения, драйверы и интерфейсные компоненты имели встроенные средства для корректировки данной проблемы на клиентской стороне[142].
Версия 1.5 и более поздние учитывают наличие корректировок в API и инсталлируются С OldParameterOrdering = 0 (False). Установите этот логический параметр В True (1), если вам нужно вернуться к старым условиям для совместимости с существующим кодом.
Параметры, связанные с внешними объектами
Выбор и установки значений параметров для модулей внешних кодов и файлов данных обсуждаются в конце разд. "Конфигурирование внешних размещений".