Tato stránka byla strojově přeložena. Přečtěte si anglický originál. English

OLTP-EMUL je oficiální test Firebird, který emuluje realistické OLTP zatížení na Firebird 2.5 a novějších. Použijte jej pro kontrolu výkonu a regresí při mnoha souběžných relacích ISQL. Před spuštěním testu si pečlivě přečtěte tuto příručku.

Klonování repozitáře

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

Rychlý start založený na práci Pavla Zotova (Moskva). Dotazy k samotnému testu: [email protected]. Podpora IBSurgeon: [email protected].

1. Předpoklady

Na hostiteli, který bude spouštět relace ISQL, nainstalujte klienta Firebird a ujistěte se, že jsou k dispozici tyto binární soubory:

  • isql (v některých balíčcích POSIX: isql-fb)
  • fbsvcmgr

2. Výběr a kopírování konfiguračního souboru

Ve složce src vyberte výchozí konfiguraci odpovídající hlavní verzi Firebirdu a operačnímu systému a poté ji zkopírujte bez přípony .default.

Firebird OS Konfigurační soubor
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. Důležitá nastavení

Upravte zkopírovanou konfiguraci. Zvláštní pozornost věnujte:

  • fbc - cesta k isql na počítači, který spouští relace
  • clu - volitelný nestandardní název binárního souboru ISQL (např. isql-fb v balíčcích POSIX)
  • dbnm - úplná cesta a název souboru databáze na serveru (pouze ASCII; ne alias, pokud chcete, aby skript databázi vytvořil)
  • host, port, usr, pwd - parametry připojení
  • tmpdir - adresář pro protokoly ISQL a dočasné testovací soubory
  • init_docs - dokumenty k vytvoření před měřeným zatížením (nejprve zkuste 3000-5000)
  • warm_time / test_time - fáze zahřívání a měření v minutách
  • sleep_min / sleep_max - pauza mezi transakcemi (nastavte sleep_max na 0 pro vypnutí pauz)
  • sleep_ddl - volitelná UDF pro pauzy (upřednostňovaná před shell sleep / cscript); binární soubory v util/udf64/
  • wait_for_copy - pauza po inicializaci, abyste mohli pořídit snímek databáze před zahříváním/měřením (užitečné pro opakované spuštění)

Po inicializaci test spustí zahřívání po dobu warm_time minut a poté měří po dobu test_time minut.

4. Windows a tipy pro firebird.conf

Vylučte antivirovou / systémovou kontrolu z tmpdir a z dočasných složek Firebirdu (FIREBIRD_TMP / TMP / TEMP a TempDirectories v firebird.conf). Zarovnání FIREBIRD_TMP s TempDirectories snižuje zpomalení při mnoha relacích ISQL.

Zvyšte alespoň:

  • DefaultDbCachePages
  • LockHashSlots
  • LockMemSize
  • FileSystemCacheThreshold - musí být nastaveno explicitně a větší než DefaultDbCachePages (test odmítne chybějící/okomentovanou hodnotu, kromě některých rozložení balíčků POSIX)

Cílem je zhruba 25 % RAM pro mezipaměť stránek. Nenastavujte DefaultDbCachePages nad 2048 pro Classic / SuperClassic. Velikost stránky je pevně nastavena na 8192.

Příklad středního zatížení (~100 relací):

Parametr 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

Pro hotové konfigurace viz Kalkulačka konfigurací a referenční konfigurace.

5. Spuštění testu

Otevřete shell, přejděte do src a spusťte:

1run_oltp_emul <FbMajor> <NumSessions> [nostop]
  • FbMajor - 25, 30 nebo 40 pro Firebird 2.5 / 3.0 / 4.0
  • NumSessions - počet relací ISQL ke spuštění
  • nostop - volitelné; přeskočí interaktivní pauzy (užitečné z plánovače)

Pokud databázový soubor neexistuje a dbnm je úplná cesta (ne alias), skript jej může vytvořit. Neúplné nebo prázdné předchozí databáze jsou podle potřeby znovu vytvořeny.

6. Zprávy a zastavení

Po zahřívání + době měření se relace automaticky zastaví. První relace ISQL zapíše závěrečnou zprávu do tmpdir. S make_html = 1 na Windows se také vytvoří HTML zpráva (pomalejší).

Pojmenování zpráv závisí na file_name_with_test_params:

  • Okomentováno (výchozí) - např. oltp**.report.txt
  • regular - názvy s časovým razítkem vhodné pro procházení mnoha běhů ve výpisu složky
  • benchmark - názvy vhodné pro porovnávání nastavení/variant DDL

Zprávy zahrnují architekturu a nastavení, celkový a intervalový výkon (CNT_OK_PER_MINUTE / AVG_TIMES_PER_MINUTE), volitelné podrobnosti monitorování, výjimky, statistiky databáze, poměry verzí/záznamů, validaci upravených tabulek a rozdíl firebird.log před/po.

Můžete také dotazovat:

select * from srv_mon_perf_dynamic;
select * from srv_mon_perf_total;

Předčasné zastavení

Použijte 1stoptest.tmp (.bat / .sh) vytvořený v tmpdir při každém spuštění. Pro spuštění na více hostitelích můžete místo toho povolit ExternalFileAccess v firebird.conf, nastavit use_external_to_stop v konfiguraci OLTP a zapsat znak do tohoto stop souboru (vymažte jej před každým novým spuštěním).

Opakovatelné základní linie

Nastavte wait_for_copy = 1, nechte inicializaci dokončit, zkopírujte databázi a poté obnovte tuto kopii před každým srovnávacím spuštěním, aby každé měření začínalo ze stejného bodu.

Co modeluje zatížení

Scénář sleduje obchodní dokumenty ve stylu autoservisu:

  1. Objednávky dílů od zákazníka (nebo interní)
  2. Objednávky se kombinují a odesílají dodavateli
  3. Faktura dodavatele (úplná nebo částečná)
  4. Příjem na sklad; díly objednané zákazníkem jsou rezervovány
  5. Prodej a odpisy ze skladu
  6. Storno je možné v několika krocích
  7. Částečné/úplné platby a storna ovlivňující zůstatky
  8. První relace vytváří zprávy o výkonu, výjimkách, statistikách a validaci