Skip to content

Izanami ilə Kaos sınaqları

Izanami Iroha iş məkanında kaos şəbəkəsi orkestratorudur. Birbaşa istifadə edilə bilən yerli Iroha klasteri başlatır, konfigurassiya olunan bir iş yükü təqdim edir və operatorların şəbəkənin nəzarət olunmuş uğursuzluq altında irəliləyişini davam etdirdiyini yoxlaya bilməsi üçün seçilmiş həmyaşıllılara səhvlər enjeksiyaya verir.

Izanami-ni istehsaldan əvvəl dayanıqlılıq yoxlamaları, regressiya reproduksiyası və konsensus tənzimlənməsi üçün istifadə edin. Onu istehsal şəbəkəsinə yönəltməyin: vasitə başladığı həmyaşıdlara sahib olmaq üçün nəzərdə tutulmuşdur, o cümlədən həmyaşıda yenidən başlamaq, saxlama süpürmələri, süni paket itkisi və yerli CPU və ya disk təzyiqi.

Əvvəlki şərtlər

Izanami-ni Iroha mənbə anbarından yox, bu sənəd anbarından çalışdırın:

bash
git clone https://github.com/hyperledger-iroha/iroha.git
cd iroha
cargo build -p izanami

Binary şəbəkəlik həmyaşıdları yaratmaq və idarə etmək üçün açıq şəkildə icazə verilməlidir. TUI olmayan hər bir icra üçün --allow-net keçin və ya TUI-də allow_net aktivləşdirin

bash
cargo run -p izanami -- --allow-net --peers 4 --faulty 1 --duration 120s

İnteraktiv çalışdırma konfigurasiyası üçün:

bash
cargo run -p izanami -- --tui --allow-net

Izanami TUI və CLI parametrlərini istifadəçi konfiqurasiya dizaynı altında saxlayır, buna görə əvvəlki profildən yenidən istifadə etməzdən əvvəl göstərilən parametrləri nəzərdən keçirin.

Bazanın icra olunması

Ciddi səhvləri əlavə etməzdən əvvəl bir təkrarlana bilən əsas xəttlə başlayın:

bash
cargo run -p izanami -- \
  --allow-net \
  --peers 4 \
  --faulty 1 \
  --duration 5m \
  --target-blocks 100 \
  --progress-interval 15s \
  --progress-timeout 120s \
  --latency-p95-threshold 2s \
  --tps 15 \
  --max-inflight 32 \
  --submitters 1 \
  --seed 42

Bu qaçış yalnız klasterin tələb olunan blok hədəfinə çatması, vaxt məhdudluğu ərzində irəliləyiş əldə etməsi və seçmə p95 blok aralığı həddindən aşağı qalması təqdirində uğurlu olur.

Komanda, toxum, Iroha commit, peer count, faulty-peer count, workload profile, target TPS və latency həddini qeyd edin. Bu dəyərlər olmadan başqa operator eyni uğursuzluq nümunəsini oynata bilməz.

İş yükü profilləri

Izanami iki iş yükü profilinə malikdir:

ProfilBunu istifadə edin.Qeydlər
stableUzun sürən nəmləndirmə və təkrarlana bilən performans yoxlamalarıİcra etmək üçün təhlükəsiz reseptləri üstün tutur
chaosSəhv yolunun əhatə olunmasıMəqsədsiz reseptləri ehtiva edir

Əvvəlcə sabit profildən istifadə edin:

bash
cargo run -p izanami -- --allow-net --workload-profile stable --seed 42

Əsas xətt artıq başa düşüldükdən sonra haos profiləsinə keç:

bash
cargo run -p izanami -- --allow-net --workload-profile chaos --seed 42

Müqavilələrin tətbiqi reseptləri açıq şəkildə icazə verilmədiyi təqdirdə sabit işləmələrdə söndürülür:

bash
cargo run -p izanami -- \
  --allow-net \
  --workload-profile stable \
  --allow-contract-deploy-in-stable

Yükləmədə yuxarı axın iş məkanından yerləşdirilmiş SORA Nexus standartları istifadə edilməlidirsə, --nexus istifadə edin.

Səhvlərin nəzarəti

Nə vaxt? --faulty sıfırdan böyükdürsə, ən azı bir səhv ssenariyası aktivləşdirilməlidir. Default toggles default enable, və boolean bayraqları deaktiv edilə bilər ilə =false.

Səhv .CLI bayraqNə işləyir?
Qəsd və yenidən başlanğıc--fault-enable-crash-restartTərəfdaş prosesi itkisi və bərpa
Yükləməni silin və yenidən başlat--fault-enable-wipe-storageYoxsul yerli dövlətdən bərpa olunması
Ədalətsiz əməliyyat spamı--fault-enable-spam-invalid-transactionsQəbul və rədd yolları
Şəbəkə gecikməsi--fault-enable-network-latencyYavaş dedikodular və gecikmiş razılaşma mesajları.
Şəbəkə partisiyası--fault-enable-network-partitionMüvəqqəti etibarlı həmyaşıdların təcrid edilməsi
P2P paket itkisi--fault-enable-network-packet-lossTətbiq çərçivəsində trafik azalıb
CPU stres--fault-enable-cpu-stressYerli təsdiq və planlaşdırma təzyiqi
Disk doymuşluğu--fault-enable-disk-saturationYerli saxlama təzyiqi

Yalnız paket itkisi ilə həyata keçirilən yarış üçün:

bash
cargo run -p izanami -- \
  --allow-net \
  --peers 20 \
  --faulty 5 \
  --duration 800s \
  --fault-window-start 133s \
  --fault-window-end 266s \
  --tps 200 \
  --submitters 20 \
  --max-inflight 512 \
  --fault-enable-crash-restart=false \
  --fault-enable-wipe-storage=false \
  --fault-enable-spam-invalid-transactions=false \
  --fault-enable-network-latency=false \
  --fault-enable-network-partition=false \
  --fault-enable-network-packet-loss=true \
  --fault-enable-cpu-stress=false \
  --fault-enable-disk-saturation=false \
  --fault-network-packet-loss-percent 75 \
  --seed 42

--fault-window-start--fault-window-end tətbiq edilmədən əvvəl və sonra idarə olunan sabit vəziyyət dövrünü saxlamaq üçün istifadə edin. Bu, başlanğıc səs-küyünün səhvin təsiri ilə fərqlənməsini asanlaşdırır.

Ssenarilərin formaları

Yuxarıdakı Izanami kataloqu CLI profillərinə ümumi blockchain ünsiyyət çatışmazlığı formalarını xəritə edir. Onları eyni bayraqlarla modelləşdirə bilərsiniz:

SsenaryoTipik forma
Məqsədli yük--faulty 0, yüksək --tps, bir təqdimatçı, yüksək --max-inflight
Keçmiş uğursuzluqYalnız sərhədli bir səhv pəncərəsi daxilində qəzaya / yenidən başlama imkanı
Paket itkisiYalnız paket itkisini təmin etmək, ümumiyyətlə 75% itirmə nisbəti ilə
Qalanma və bərpaQəza / yenidən başlama ilə böyük bir səhv yaşıllı populyasiyasından istifadə edin
Liderlərin təcrid edilməsiYalnız şəbəkə partisiyası və ya paket itkisi səhvləri olan tam bir qüsurlu həmyaşıd istifadə edin; Izanami Sumeragi lider telemetriyasını izləyir

Bir dəfədə bir dəyişən sabit saxlayın. Əgər həmkarların sayını, iş yükü profilini, səhv pəncərəsini və TPS eyni vaxtda dəyişdirirsinizsə, nəticəni şərh etmək çətindir.

Nəyə baxmaq lazımdır?

Döyüş zamanı performans təsdiq üçün istifadə olunan eyni siqnallara diqqət yetirin:

  • Hər cərrahiyyədə blok hündürlüyündə irəliləyiş
  • təqdim olunmuş, qəbul edilmiş, rədd edilmiş və vaxtla başa çatmış əməliyyatlar;
  • Səyahət dərinliyi, səyahət doymuşluğu və son nöqtələrin geri basıncı
  • baxış dəyişiklikləri, bərpa yolları, çatışmayan bloklar və çatışmayan quorum sertifikatları
  • RBC geri qalxma, gözlənici iclaslar və düşmüş və ya gecikmiş konsensus trafikləri
  • CPU, yaddaş, disk və həmyaşıdları idarə edən ev sahibi şəbəkə doymuşluğu

Validasiya gecikməsinin təhlili üçün əsas döngədəki debug qeydlərini aktivləşdirin:

bash
RUST_LOG=iroha_core::sumeragi::main_loop=debug \
  cargo run -p izanami -- --allow-net --seed 42

Hər blok block validation timings ilə stateless_ms, execution_mstotal_ms emit etməlidir. Bu vaxtları konsensus zamanlayıcılarını dəyişdirmədən əvvəl p95 blok aralığı, görünüş dəyişikliyi hesablamaları və növbə təzyiqi ilə müqayisə edin.

Nəticələrin təfsiri

Seçilmiş bütün həmyaşıdların blokları yerinə yetirməsini davam etdirdikləri zaman bir qaçışa sağlam yanaşın, arxa yüklər bağlanmadan böyümür və qurulmuş pəncərə başa çatdıqdan sonra səhvlər yeni bərpa fəaliyyətinə səbəb olmur.

Döyüşü uğursuzluq kimi qəbul edin:

  • --progress-timeoutdən uzun blok irəliləyiş stallları.
  • Rəfiqələrin hündürlüyü fərqlənir və yenidən birləşmir
  • p95 gecikmə müddəti --latency-p95-threshold -dən çoxdur
  • Çətinlik pəncərəsinin bağlandıqdan sonra növbələr yarışın qalan hissəsi üçün böyüyür.
  • rədd edilən və ya vaxtla başa çatmış əməliyyatlar seçilmiş iş yükü ilə izah olunmur.
  • Peer restart, saxlama silinməsi və ya paket itkisi bərpası əl təmizləmə tələb edir.

Bir uğursuzluqdan sonra eyni toxum və bir az səhv növü ilə yenidən çalışın. Bu, iş yükünü və vaxtını təkrarlayır və uğursuzluğun səthini daraldır.