Firebird OLTP-EMULator test
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.5 | Windows | oltp25_config.win.default |
| 2.5 | Linux | oltp25_config.nix.default |
| 3.0 | Windows | oltp30_config.win.default |
| 3.0 | Linux | oltp30_config.nix.default |
| 4.0 | Windows | oltp40_config.win.default |
| 4.0 | Linux | oltp40_config.nix.default |
# Windows copy .\oltp30_config.win.default .\oltp30_config.winLinux
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
isqlna počítači, který spouští relace - clu - volitelný nestandardní název binárního souboru ISQL (např.
isql-fbv 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_maxna 0 pro vypnutí pauz) - sleep_ddl - volitelná UDF pro pauzy (upřednostňovaná před shell
sleep/cscript); binární soubory vutil/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ň:
DefaultDbCachePagesLockHashSlotsLockMemSizeFileSystemCacheThreshold- 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,30nebo40pro 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žkybenchmark- 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:
- Objednávky dílů od zákazníka (nebo interní)
- Objednávky se kombinují a odesílají dodavateli
- Faktura dodavatele (úplná nebo částečná)
- Příjem na sklad; díly objednané zákazníkem jsou rezervovány
- Prodej a odpisy ze skladu
- Storno je možné v několika krocích
- Částečné/úplné platby a storna ovlivňující zůstatky
- První relace vytváří zprávy o výkonu, výjimkách, statistikách a validaci