Firebird OLTP-EMULator test
OLTP-EMUL, Firebird'in resmi test aracıdır ve Firebird 2.5 ve üzeri sürümlerde gerçekçi bir OLTP iş yükünü simüle eder. Çok sayıda eşzamanlı ISQL oturumu altında performans ve regresyon kontrolleri için kullanın. Testi çalıştırmadan önce bu kılavuzu dikkatlice okuyun.
Depoyu klonlayın
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
Pavel Zotov'un (Moskova) çalışmasına dayanan hızlı başlangıç. Testin kendisiyle ilgili sorular: [email protected]. IBSurgeon desteği: [email protected].
1. Ön koşullar
ISQL oturumlarını çalıştıracak ana bilgisayara bir Firebird istemcisi kurun ve şu ikili dosyaların mevcut olduğundan emin olun:
isql(bazı POSIX paketlerinde:isql-fb)fbsvcmgr
2. Bir yapılandırma dosyası seçin ve kopyalayın
src klasöründe, Firebird ana sürümünüze ve işletim sisteminize uyan varsayılan yapılandırmayı seçin ve .default soneki olmadan kopyalayın.
| Firebird | İşletim Sistemi | Yapılandırma dosyası |
|---|---|---|
| 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. Önemli ayarlar
Kopyalanan yapılandırmayı düzenleyin. Şunlara özellikle dikkat edin:
- fbc - oturumları başlatan makinedeki
isqlyolunu belirtir - clu - isteğe bağlı, standart olmayan ISQL ikili dosya adı (ör. POSIX paketlerinde
isql-fb) - dbnm - sunucudaki veritabanının tam yolu ve dosya adı (yalnızca ASCII; komut dosyasının oluşturmasını istiyorsanız takma ad değil)
- host, port, usr, pwd - bağlantı parametreleri
- tmpdir - ISQL günlükleri ve geçici test dosyaları için dizin
- init_docs - ölçülen iş yükünden önce oluşturulacak belgeler (önce 3000-5000 deneyin)
- warm_time / test_time - ısınma ve ölçüm aşamaları, dakika cinsinden
- sleep_min / sleep_max - işlemler arasındaki duraklama (duraklamaları devre dışı bırakmak için
sleep_maxdeğerini 0 yapın) - sleep_ddl - duraklamalar için isteğe bağlı UDF (kabuk
sleep/cscriptkomutuna tercih edilir); ikili dosyalarutil/udf64/altında - wait_for_copy - ısınma/ölçümden önce veritabanının anlık görüntüsünü alabilmeniz için başlatma sonrası duraklama (tekrarlanan çalıştırmalar için kullanışlıdır)
Başlatmanın ardından test, warm_time dakika boyunca ısınma çalıştırır, ardından test_time dakika boyunca ölçüm yapar.
4. Windows ve firebird.conf ipuçları
Antivirüs / işletim sistemi taramasını tmpdir ve Firebird geçici klasörlerinden (FIREBIRD_TMP / TMP / TEMP ve firebird.conf içindeki TempDirectories) hariç tutun. FIREBIRD_TMP değerini TempDirectories ile hizalamak, çok sayıda ISQL oturumu altında yavaşlamaları azaltır.
En azından şunları artırın:
DefaultDbCachePagesLockHashSlotsLockMemSizeFileSystemCacheThreshold- açıkça ayarlanmalı veDefaultDbCachePagesdeğerinden büyük olmalıdır (test, eksik/yorum satırı yapılmış bir değeri reddeder; bazı POSIX paket düzenleri hariç)
Sayfa önbelleği için kabaca RAM'in %25'ini hedefleyin. Classic / SuperClassic için DefaultDbCachePages değerini 2048'in üzerine ayarlamayın. Sayfa boyutu 8192 olarak sabit kodlanmıştır.
Orta düzey yük örneği (~100 oturum):
| Parametre | 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 |
Hazır yapılandırmalar için Yapılandırma Hesaplayıcı ve referans yapılandırmaları bölümlerine bakın.
5. Testi çalıştırın
Bir kabuk açın, src dizinine geçin ve şunu çalıştırın:
1run_oltp_emul <FbMajor> <NumSessions> [nostop]
- FbMajor - Firebird 2.5 / 3.0 / 4.0 için
25,30veya40 - NumSessions - başlatılacak ISQL oturumu sayısı
- nostop - isteğe bağlı; etkileşimli duraklamaları atlar (zamanlayıcıdan kullanışlıdır)
Veritabanı dosyası yoksa ve dbnm tam bir yolu gösteriyorsa (takma ad değil), komut dosyası onu oluşturabilir. Eksik veya boş önceki veritabanları gerektiğinde yeniden oluşturulur.
6. Raporlar ve durdurma
Isınma + ölçüm süresinden sonra oturumlar otomatik olarak durur. İlk ISQL oturumu nihai raporu tmpdir altına yazar. Windows'ta make_html = 1 ile bir HTML raporu da üretilir (daha yavaş).
Rapor adlandırması file_name_with_test_params değerine bağlıdır:
- Yorum satırı (varsayılan) - ör.
oltp**.report.txt regular- klasör listesinde birçok çalıştırmayı görüntülemek için uygun zaman damgalı adlarbenchmark- ayarları/DDL varyantlarını karşılaştırmak için uygun adlar
Raporlar; mimari ve ayarları, genel ve aralık başına performansı (CNT_OK_PER_MINUTE / AVG_TIMES_PER_MINUTE), isteğe bağlı izleme ayrıntılarını, istisnaları, veritabanı istatistiklerini, sürüm/kayıt oranlarını, değiştirilen tablolar için doğrulamayı ve firebird.log öncesi/sonrası farkını içerir.
Ayrıca şunları da sorgulayabilirsiniz:
select * from srv_mon_perf_dynamic; select * from srv_mon_perf_total;
Erken durdurma
Her başlatmada tmpdir içinde oluşturulan 1stoptest.tmp (.bat / .sh) dosyasını kullanın. Çoklu ana bilgisayar başlatmaları için, firebird.conf içinde ExternalFileAccess özelliğini etkinleştirebilir, OLTP yapılandırmasında use_external_to_stop değerini ayarlayabilir ve bu durdurma dosyasına bir karakter yazabilirsiniz (her yeni çalıştırmadan önce temizleyin).
Tekrarlanabilir temeller
wait_for_copy = 1 olarak ayarlayın, başlatmanın bitmesini bekleyin, veritabanını kopyalayın ve her karşılaştırmalı çalıştırmadan önce bu kopyayı geri yükleyin; böylece her ölçüm aynı noktadan başlar.
İş yükünün modellediği senaryo
Senaryo, oto servis tarzı iş belgelerini takip eder:
- Müşteri (veya dahili) parça siparişleri
- Siparişlerin birleştirilip tedarikçiye gönderilmesi
- Tedarikçi faturası (tam veya kısmi)
- Stok girişi; müşteri siparişi verilen parçaların ayrılması
- Satışlar ve stok düşümleri
- Birden fazla adımda iptal olasılığı
- Bakiyeleri etkileyen kısmi/tam ödemeler ve iptaller
- İlk oturum performans, istisna, istatistik ve doğrulama raporlarını üretir