В Классическом сервере запись события, похожая на "активную", показанная на рисунке, может быть причиной для беспокойства. Она указывает, что один серверный процесс получил флаг (mutex) при доступе к ресурсу, записал свой идентификатор владельца в заголовочную группу блокировки, а затем был уничтожен, в то время как он все еще хранился в таблице блокировок. Однако вторая заголовочная группа блокировки должна иметь достаточно информации, чтобы позволить второму процессу отменить все действия, частично завершенные уничтоженным процессом.
Интерактивные временные ряды деятельности по блокировкам генерируются, когда fb_iock_print выполняется с переключателем -i для измерения производительности Менеджера блокировок. Это моделирует UNIX-утилиту sar (System Activity Reporter, построитель отчетов системной деятельности). Отчет, показанный на рис. 40.13, выбирает каждые 4 секунды десять интервалов. Выборка на рис. 40.13 была сгенерирована в Классическом сервере Firebird при выполнении четырех локальных процессов с большим количеством конфликтов:
fb_lock_print -ia 4 10
fb_iock_print -ia "запрашивает" статистику:
1. acquire/s: среднее количество попыток в секунду обращений к таблице блокировок.
2. acqwait/s: среднее количество попыток, которым пришлось ожидать, в каждую секунду.
Рис. 40.13. Интерактивная выборка
3. %acqwait: процент попыток, которые были вынуждены ожидать.
4. acqrtry/s: среднее количество повторных обращений к таблице блокировок в секунду (в теории только для машин SMP).
5. rtrysuc/s: среднее количество успешных повторных попыток в секунду.
! ! !
СОВЕТ. В качестве подсказки, что означают столбцы в различных интерактивных отчетах, прочтите статью "Reading a Lock Print" Ann Harrison на http://www.ibphoenix.com.
. ! .
Установка конфигурации блокировки
Значения по умолчанию Менеджера блокировок должны подойти для большинства вычислительных сред. При работе, особенно в Классическом сервере, имеет смысл подрегулировать эти установки для улучшения производительности или для устранения дефицита ресурсов блокировки.
Файлы конфигурации размещены в корневом каталоге Firebird. Для сервера Firebird 1.5 и более поздних файл конфигурации называется firebird.conf. Для версии 1.0.x он называется ibconfig в Windows и-isc config в POSIX. Используйте текстовый редактор для открытия и редактирования этого файла.
LockAcquireSpins
Версия 1.5 и выше, файл firebird.conf.
lock_acquire_spins
Версии, предшествующие Firebird 1.5, файл iscconfig/ibconfig.
Эта установка используется только для машин SMP при выполнении Классического сервера.
В Классическом сервере в любой момент времени к таблице блокировок может иметь доступ только один клиентский процесс. Флаг управляет доступом к таблице блокировок. Клиентские процессы могут обращаться к флагу условно или безусловно. Если запрос условный, то он будет ошибочным и должен быть повторен. Если запрос безусловный, то он будет ожидать, пока не будет удовлетворен. LockAcquirespins устанавливает количество возможных попыток, если запрос к флагу условный.
Требуется целое число. Значение по умолчанию 0 (безусловный). Не существует рекомендованного минимума или максимума.
LockHashSlots
Версия 1.5 и выше, файл firebird.conf.
lock_hash_slots
Версии, предшествующие Firebird 1.5, файл iscconfig/ibconfig.
Используйте этот параметр для настройки списка хэша блокировок. При повышенной нагрузке производительность может быть улучшена увеличением области памяти под хэш для распределения списка на более короткие цепи хэша. Значением является целое число. Рекомендуется использовать простое число. Значение по умолчанию 101.
Этот параметр и LockMemSize (см. следующий раздел) должны вычисляться одновременно с использованием инструмента Lock Print. Если цепи хэш блокировок более чем в среднем 20, значит объем памяти под хэш слишком мал. Если вам надо увеличить память под хэш, вам нужно увеличить размер таблицы блокировок на тот же процент.
LockMemSize
Версия 1.5 и выше, файл firebird.conf.
any_lock_mem_size
Версии, предшествующие Firebird 1.5, файл isc_config/ibconfig.
Читать дальше