Это старая версия документа.
Содержание
Настройка производительности БД
Всё нижеследующее относится к OpenEdge 10.1С/10.2B, в которой большинство остальных параметров по умолчанию выставлены в оптимальное значение. Выбор средств оптимизации работы брокера зависит от того, какая лицензия на OpedEdge DB используется. Многие действенные средства оптимизации недоступны в лицензиях ниже Enterprise DB.
Рекомендуемые параметры запуска брокера Progress для оптимизации производительности
Параметры БД в скрипте bq41d
В запускающем скрипте bq41d
собраны все основные параметры, влияющие на производительность данного инстанса БД:
RunAPW="yes" # Запускать Async Page Writer ? (yes/no) BQNAPW="2" # Сколько именно процессов Async Page Writer запускать (1-2) ? RunBIW="yes" # Запускать Before-Image Writer ? (yes/no) RunAIW="yes" # Запускать After-Image Writer ? (yes/no) BQNdbbufs="131072" # Буфер кэша БД в блоках, рекомендуется = 2% от размера БД, в примере = 1 ГБ BQNlocks="200000" # Общее число блокировок в БД, рекомендуется = <кол-во лицевых счетов> * 2 BQParams="-semsets <BQNusers/20-50>"
Остальные параметры, которые едины для всех брокеров БД на данном сервере, рекомендуется определять в файле bisquit.pf.
Чтобы изменённые параметра вступили в действие, необходимо перезапустить брокер БД: bq41d stop; bq41d start
.
Размер буферного пула базы (параметр BQNdbbufs)
Значение параметра задается в блоках базы данных. Рекомендуемое начальное значение для основной базы – 2% от размера БД. С течением времени это значение необходимо корректировать, учитывая показания Progress Monitor'а - bq41d mon
→ 5. Activity, и наблюдать значение поля “Buffer Hits”. В момент активной работы с базой оно не должно быть меньше 95%, рекомендуется поддерживать значение на уровне 98-99%.
- Если значение поля “Buffer Hits” < 95%, параметр –B необходимо увеличить.
- Если значение поля “Buffer Hits” >= 99%, параметр –B увеличивать бессмысленно.
Слишком большое значение параметра ведет к непроизводительному расходу памяти и может быть причиной падения производительности.
Размер таблицы блокировок (параметр BQNlocks)
Рекомендуемое значение параметра равно удвоенному количеству лицевых счетов. Значение параметра необходимо увеличить при получении сообщения Progress “SYSTEM ERROR: Record lock table too small. Increase -L parameter.”
Слишком большое значение параметра ведет к непроизводительному расходу памяти и снижению производительности.
Количество попыток спин-блокировки (-spin)
Этот параметр доступен в лицензии не ниже Enterprise, в лицензии Workgroup он заблокирован в значение 1. Рекомендуемое начальное значение - 5000. В дальнейшем, значение параметра необходимо периодически корректировать. Для этого наблюдайте значения поля “sema” (“sema/s”) в выводе команды sar –m и значение поля “%sys” в выводе команды sar –u за 1-2 типовых рабочих дня. При наличии в поле “sema” значений, измеряющихся сотнями и тысячами, попробуйте увеличивать (по 1000-2000) значение параметра -spin, наблюдая, чтобы это не приводило к заметному увеличению среднего значения поля “%sys”. При этом пиковые значения поля “sema” должны уменьшаться.
Изменять значение параметра рекомендуется в файле bisquit.pf
одновременно для всех брокеров на данном сервере.
Количество наборов семафоров(-semsets)
Этот параметр доступен в лицензии не ниже Enterprise DB. По умолчанию значение параметра равно 3. При большом (сотни) количестве одновременно работающих пользователей необходимо его увеличить для начала до значения, равного количеству одновременно работающих пользователей, поделенное на 50. При этом должно уменьшаться значение поля “sema” (“sema/s”) вывода команды sar –m.
Изменить значение параметра можно, дописав через пробел параметр со значением в список параметров, определенных в переменной BQParams запускающего скрипта.
Использование асинхронной записи в файлы базы данных
Запуск Async Page Writer
Возможность асинхронной записи в файлы базы данных доступна в лицензии не ниже Enterprise. Для включения асинхронной записи необходимо запустить как минимум один специальный агент (APW). Процесс APW можно запустить при старте брокера. Для этого в запускающем скрипте bq41d установите значения переменных:
RunAPW="yes" # Запускать Async Page Writer ? (yes/no) BQNAPW="2" # Сколько именно процессов Async Page Writer запускать (1-2) ?
и перезапустите брокер БД.
В дальнейшем количество APW можно корректировать, исходя из показаний bq41d mon
→ “5. Activity” и наблюдая значение поля “Writes by APW”. При активной работе с базой оно должно быть порядка 90%.
Если значение поля “Writes by APW” значительно меньше, следует увеличить количество APW либо при работающем брокере (утилитой bq41d exec proapw $BQ/db/bisquit
), либо с перезапуском брокера, изменив значение переменной BQNAPW в запускающем скрипте.
Запуск Before Image Writer
Для асинхронной записи в журнал before-image также используется специальный агент (BIW). В отличие от APW, BIW может быть запущен только один. Чтобы запустить BIW при старте брокера в запускающем скрипте bq41d
установите значение переменной:
RunBIW="yes" # Запускать Async Before-Image Writer ? (yes/no)
и перезапустите брокер БД.
Запуск After Image Writer
Для асинхронной записи в журнал after-image также используется специальный агент (AIW), который тоже может быть запущен только один. Чтобы запустить AIW при старте брокера в запускающем скрипте bq41d
установите значение переменной:
RunAIW="yes" # Запускать After-Image Writer ? (yes/no)
и перезапустите брокер БД.
Оптимизация размера блока и кластера журнала before-image
База данных выполняет непрерывный процесс синхронизации содержимого разделяемой памяти с состоянием базы на диске, в рамках которого в фоновом режиме измененные блоки данных пишутся на диск. Новый цикл синхронизации начинается с открытием очередного кластера журнала before-image. Увеличение размера кластера журнала before-image приводит к увеличению интервала между контрольными точками, что дает процессам записи APWs необходимое время для их работы.
Для проверки эффективности обработки транзакций необходимо выяснить частоту выполнения контрольных точек, используется экран Checkpoints утилиты bq41d mon
→ R&D → 3. Other → 4. Checkpoints. Например:
Ckpt ------ Database Writes ------ No. Time Len Freq Dirty CPT Q Scan APW Q Flushes Duration Sync Time 29 15:35:08 113 0 3088 0 0 0 0 0.21 0.17 28 15:35:01 7 7 4254 0 0 0 1483 0.11 0.08 27 15:34:49 12 12 4277 0 0 0 752 0.09 0.06 26 15:34:39 10 10 3915 0 0 0 826 0.08 0.05 25 15:34:26 13 13 4385 0 0 0 598 1.21 1.15 ...
В идеальном состоянии интервал между проверками (колонка Len) должен составлять около минуты или более, а число буферов, сброшенных на диск в контрольной точке (колонка Flushes), должно быть равным или близко к нулю. Если интервалы короче минуты, то следует увеличить размер кластера. Однако его не следует делать слишком большим, оно не должно превышать 131072 КБ. Если число сброшенных буферов больше 10, то также следует увеличить размер кластера, или увеличить число фоновых процессов APW, или повысить производительность дисков по записи.
Увеличение размера блока, используемого для работы с журналом before-image, также увеличивает производительность. Но желательно, чтобы размер блока журнала before-image совпадал с размером блока базы данных.
Узнать текущий размер блока и кластера журнала before-image можно, запустив утилиту bq41d mon
→ R&D → 1. Status Displays → 9. BI Log. Например:
Before-image block size: 8192 bytes Before-image cluster size: 512 kb (524288 bytes)
Изменить размер блока журнала before-image можно следующим образом (размер блока указывается в килобайтах):
bq41d stop bq41d trunc –biblocksize 8
Изменить размер кластера журнала before-image можно следующим образом (размер кластера указывается в килобайтах) :
bq41d stop bq41d trunc -bi 16384
Возможно одновременное изменение размеров блока и кластера журнала before-image:
bq41d stop bq41d trunc –biblocksize 8 -bi 16384
OpenEdge Release 10.2B07 as of Fri Sep 7 02:15:05 EDT 2012 Before-image cluster size set to 16384 kb. (1620) Before-image block size set to 8 kb (8192 bytes). (3781)
Перестройка индексов (начиная с 10.2B06)
Предполагается, что:
- 50% оперативной памяти и 4 процессорных ядра могут быть выделены под процесс перестройки индексов
- индексы располагаются в отдельных областях БД (подробнее - Рекомендуемая структура БД QBIS.Bank)
- в каталоге, указанном в параметре -T в файле
bisquit.pf
, имеется достаточное кол-во свободного пространства для размещения временных файлов сортировки, либо заранее был создан файлbisquit.srt
.
bq41d stop bq41d trunc bq41d backup bq41d truncate area "op-i" bq41d truncate area "history-i" bq41d truncate area "signs-i" bq41d truncate area "olap-i" bq41d truncate area "other-i" bq41d truncate area "perm-i" bq41d truncate area "acct-i" bq41d truncate area "pos-i" bq41d truncate area "msg-i" bq41d truncate area "text-i" bq41d truncate area "mart-i" bq41d idxbuild all -mergethreads 2 –threadnum 2 -datascanthreads 6 -B 1024 –TF 50 –TMB 64 –TB 64 –TM 32 -rusage -silent