Bu sayfa makine çevirisidir. İngilizce orijinalini okuyun. English

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.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. Önemli ayarlar

Kopyalanan yapılandırmayı düzenleyin. Şunlara özellikle dikkat edin:

  • fbc - oturumları başlatan makinedeki isql yolunu 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_max değerini 0 yapın)
  • sleep_ddl - duraklamalar için isteğe bağlı UDF (kabuk sleep / cscript komutuna tercih edilir); ikili dosyalar util/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:

  • DefaultDbCachePages
  • LockHashSlots
  • LockMemSize
  • FileSystemCacheThreshold - açıkça ayarlanmalı ve DefaultDbCachePages değ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, 30 veya 40
  • 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ı adlar
  • benchmark - 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:

  1. Müşteri (veya dahili) parça siparişleri
  2. Siparişlerin birleştirilip tedarikçiye gönderilmesi
  3. Tedarikçi faturası (tam veya kısmi)
  4. Stok girişi; müşteri siparişi verilen parçaların ayrılması
  5. Satışlar ve stok düşümleri
  6. Birden fazla adımda iptal olasılığı
  7. Bakiyeleri etkileyen kısmi/tam ödemeler ve iptaller
  8. İlk oturum performans, istisna, istatistik ve doğrulama raporlarını üretir