Ова страница је машински преведена. Прочитајте енглески оригинал. English

OLTP-EMUL је званични Firebird тест који емулира реалистично OLTP оптерећење на Firebird 2.5 и новијим верзијама. Користите га за проверу перформанси и регресија под многим конкурентним ISQL сесијама. Пажљиво прочитајте овај водич пре него што покренете тест.

Клонирајте репозиторијум

Windows

git clone --config core.autocrlf=true https://github.com/FirebirdSQL/oltp-emul

Linux / POSIX

git clone --config core.autocrlf=false https://github.com/FirebirdSQL/oltp-emul

Брзи почетак заснован на раду Павела Зотова (Москва). Питања о самом тесту: [email protected]. IBSurgeon подршка: [email protected].

1. Предуслови

На домаћину који ће покретати ISQL сесије, инсталирајте Firebird клијента и уверите се да су доступне следеће извршне датотеке:

  • isql (на неким POSIX пакетима: isql-fb)
  • fbsvcmgr

2. Изаберите и копирајте конфигурациону датотеку

У src фасцикли изаберите подразумевану конфигурацију која одговара вашој главној Firebird верзији и оперативном систему, затим је копирајте без .default суфикса.

Firebird ОС Конфигурациона датотека
2.5Windowsoltp25_config.win.default
2.5Linuxoltp25_config.nix.default
3.0Windowsoltp30_config.win.default
3.0Linuxoltp30_config.nix.default
4.0Windowsoltp40_config.win.default
4.0Linuxoltp40_config.nix.default
# Windows
copy .\oltp30_config.win.default .\oltp30_config.win

Linux

cp ./oltp30_config.nix.default ./oltp30_config.nix

3. Важна подешавања

Уредите копирану конфигурацију. Посебно обратите пажњу на:

  • fbc - путања до isql на машини која покреће сесије
  • clu - опционално нестандардно име ISQL бинарне датотеке (нпр. isql-fb на POSIX пакетима)
  • dbnm - пуна путања и име датотеке базе података на серверу (само ASCII; није алијас ако желите да скрипта креира базу)
  • host, port, usr, pwd - параметри повезивања
  • tmpdir - директоријум за ISQL дневнике и привремене тест датотеке
  • init_docs - документи за креирање пре мереног оптерећења (прво покушајте 3000-5000)
  • warm_time / test_time - фаза загревања и мерења, у минутима
  • sleep_min / sleep_max - пауза између трансакција (поставите sleep_max на 0 да бисте онемогућили паузе)
  • sleep_ddl - опционални UDF за паузе (пожељнији од љуске sleep / cscript); бинарне датотеке у util/udf64/
  • wait_for_copy - пауза након иницијализације како бисте могли да направите снимак базе пре загревања/мерења (корисно за поновљена покретања)

Након иницијализације, тест покреће загревање у трајању од warm_time минута, затим мери у трајању од test_time минута.

4. Windows и firebird.conf савети

Искључите антивирус / ОС скенирање из tmpdir и из Firebird привремених фасцикли (FIREBIRD_TMP / TMP / TEMP, и TempDirectories у firebird.conf). Усклађивање FIREBIRD_TMP са TempDirectories смањује успоравања под многим ISQL сесијама.

Повећајте барем:

  • DefaultDbCachePages
  • LockHashSlots
  • LockMemSize
  • FileSystemCacheThreshold - мора бити експлицитно постављен и већи од DefaultDbCachePages (тест одбацује недостајућу/коментарисану вредност, осим код неких POSIX пакета)

Циљајте на приближно 25% RAM-а за кеш страница. Немојте постављати DefaultDbCachePages изнад 2048 за Classic / SuperClassic. Величина странице је фиксно 8192.

Пример средњег оптерећења (~100 сесија):

Параметар SuperServer 3.0+ [Super]Classic 3.0+ [Super]Classic 2.5
DefaultDbCachePages ~0.25 × RAM / 8192 1024 1024
LockHashSlots 8191 16001 16001
LockMemSize 4194304 16777216 16777216

За готове конфигурације погледајте Configuration Calculator и референтне конфигурације.

5. Покрените тест

Отворите љуску, пређите у src и покрените:

1run_oltp_emul <FbMajor> <NumSessions> [nostop]
  • FbMajor - 25, 30 или 40 за Firebird 2.5 / 3.0 / 4.0
  • NumSessions - број ISQL сесија за покретање
  • nostop - опционо; прескаче интерактивне паузе (корисно из распоређивача)

Ако датотека базе података не постоји и dbnm је пуна путања (не алијас), скрипта може да је креира. Недовршене или празне претходне базе се поново креирају по потреби.

6. Извештаји и заустављање

Након времена загревања + мерења, сесије се аутоматски заустављају. Прва ISQL сесија записује коначни извештај у tmpdir. Са make_html = 1 на Windows-у, такође се генерише HTML извештај (спорије).

Именование отчетов зависит от file_name_with_test_params:

  • Закомментировано (по умолчанию) - например, oltp**.report.txt
  • regular - имена с временными метками, подходящие для просмотра множества запусков в списке папок
  • benchmark - имена, подходящие для сравнения вариантов настроек/DDL

Отчеты включают архитектуру и настройки, общую и поинтервальную производительность (CNT_OK_PER_MINUTE / AVG_TIMES_PER_MINUTE), дополнительные детали мониторинга, исключения, статистику БД, соотношения версий/записей, проверку измененных таблиц и diff firebird.log до/после.

Вы также можете выполнить запросы:

select * from srv_mon_perf_dynamic;
select * from srv_mon_perf_total;

Досрочная остановка

Используйте 1stoptest.tmp (.bat / .sh), создаваемый в tmpdir при каждом запуске. Для запусков на нескольких хостах можно включить ExternalFileAccess в firebird.conf, установить use_external_to_stop в конфигурации OLTP и записать символ в этот файл остановки (очистите его перед каждым новым запуском).

Повторяемые базовые показатели

Установите wait_for_copy = 1, дождитесь завершения инициализации, скопируйте БД, затем восстанавливайте эту копию перед каждым сравнительным запуском, чтобы каждое измерение начиналось с одной и той же точки.

Что моделирует нагрузка

Сценарий следует бизнес-документам в стиле автосервиса:

  1. Заказы клиентов (или внутренние) на запчасти
  2. Заказы объединяются и отправляются поставщику
  3. Счет поставщика (полный или частичный)
  4. Поступление на склад; заказанные клиентом запчасти резервируются
  5. Продажи и списания со склада
  6. Отмены возможны на нескольких этапах
  7. Частичные/полные платежи и отмены, влияющие на остатки
  8. Первая сессия создает отчеты о производительности, исключениях, статистике и проверке