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:
git clone https://github.com/hyperledger-iroha/iroha.git
cd iroha
cargo build -p izanamiBinary şə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
cargo run -p izanami -- --allow-net --peers 4 --faulty 1 --duration 120sİnteraktiv çalışdırma konfigurasiyası üçün:
cargo run -p izanami -- --tui --allow-netIzanami 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:
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 42Bu 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:
| Profil | Bunu istifadə edin. | Qeydlər |
|---|---|---|
stable | Uzun 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 |
chaos | Səhv yolunun əhatə olunması | Məqsədsiz reseptləri ehtiva edir |
Əvvəlcə sabit profildən istifadə edin:
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ç:
cargo run -p izanami -- --allow-net --workload-profile chaos --seed 42Mü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:
cargo run -p izanami -- \
--allow-net \
--workload-profile stable \
--allow-contract-deploy-in-stableYü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 bayraq | Nə işləyir? |
|---|---|---|
| Qəsd və yenidən başlanğıc | --fault-enable-crash-restart | Tərəfdaş prosesi itkisi və bərpa |
| Yükləməni silin və yenidən başlat | --fault-enable-wipe-storage | Yoxsul yerli dövlətdən bərpa olunması |
| Ədalətsiz əməliyyat spamı | --fault-enable-spam-invalid-transactions | Qəbul və rədd yolları |
| Şəbəkə gecikməsi | --fault-enable-network-latency | Yavaş dedikodular və gecikmiş razılaşma mesajları. |
| Şəbəkə partisiyası | --fault-enable-network-partition | Müvəqqəti etibarlı həmyaşıdların təcrid edilməsi |
| P2P paket itkisi | --fault-enable-network-packet-loss | Tətbiq çərçivəsində trafik azalıb |
| CPU stres | --fault-enable-cpu-stress | Yerli təsdiq və planlaşdırma təzyiqi |
| Disk doymuşluğu | --fault-enable-disk-saturation | Yerli saxlama təzyiqi |
Yalnız paket itkisi ilə həyata keçirilən yarış üçün:
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 və --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:
| Ssenaryo | Tipik forma |
|---|---|
| Məqsədli yük | --faulty 0, yüksək --tps, bir təqdimatçı, yüksək --max-inflight |
| Keçmiş uğursuzluq | Yalnız sərhədli bir səhv pəncərəsi daxilində qəzaya / yenidən başlama imkanı |
| Paket itkisi | Yalnız paket itkisini təmin etmək, ümumiyyətlə 75% itirmə nisbəti ilə |
| Qalanma və bərpa | Qəza / yenidən başlama ilə böyük bir səhv yaşıllı populyasiyasından istifadə edin |
| Liderlərin təcrid edilməsi | Yalnı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:
RUST_LOG=iroha_core::sumeragi::main_loop=debug \
cargo run -p izanami -- --allow-net --seed 42Hər blok block validation timings ilə stateless_ms, execution_ms və total_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.
Əlaqəli səhifələr
- Performance and Metrics
- Iroha Bare Metal üzərində işləyir
- Torii son nöqtələri