Skip to content

Izanami bilan tartibsizlik sinovlari

Izanami Iroha ish maydonida chaosnet orkestratoridir. U bir martalik mahalliy Iroha klasterini ishga tushiradi, konfiguratsiya qilinadigan ish yukini taqdim etadi va tanlangan tengdoshlarga xatolarni o'tkazadi, shunda operatorlar tarmoq nazorat qilingan nosozlikda muvaffaqiyat qozonishini tekshirishlari mumkin.

Ishlab chiqarishdan oldin chidamlilik tekshiruvlari, regressiya reproduksiyasi va konsensus sozlash uchun Izanami-dan foydalaning. Uni ishlab chiqarish tarmog'iga qaratmang: vosita ishga tushirgan tengdoshlarga ega bo'lish uchun mo'ljallangan, shu jumladan tengdoshlarni qayta boshlash, saqlash silliqlarini, sun'iy paketni yo'qotish va mahalliy CPU yoki disk bosimini o'zlashtirish uchun yaratilgan.

Oldingi shartlar

Izanami-ni Iroha manbai omboridan , ushbu hujjatlar omboridan emas, ishga tushiring:

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

Ikkilamchiga tarmoqdagi tengdoshlarni yaratish va manipulyatsiya qilish uchun aniq ruxsat berish kerak. TUI bo'lmagan har bir ishga tushirish uchun --allow-netni o'tkazib yuborish yoki TUI da allow_net ni qo'llash.

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

Interaktiv ishga tushirish konfiguratsiyasi uchun:

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

Izanami TUI va CLI sozlamalarini foydalanuvchi konfiguratsiya direktoriyasi ostida saqlab qoladi, shuning uchun oldingi profildan qayta foydalanishdan oldin ko'rsatilgan sozlamalarni ko'rib chiqing.

Boshlangʻich yoʻnalish

Shiddatli xatolarni qo'shishdan oldin bitta qayta tiklanishi mumkin bo'lgan boshlang'ich chiziq bilan boshlash:

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

Ushbu o'tish faqat klaster so'ralgan blokni maqsadga yetkazsa, vaqt bo'yicha muvaffaqiyat qozonsa va p95 bloki oralig'i chegaralaridan past bo'lsa, muvaffaqiyatli bo'ladi.

Buyruq, urug', Iroha qo'shish, tengdoshlar soni, noto'g'ri tengdoshlarning soni, ish og'irligi profili, maqsad TPS va kechikish darajasi ro'yxatini yozib oling. Ushbu qiymatlarsiz boshqa operator o'sha xato namunasini takrorlay olmaydi .

Ish yuklari profillari

Izanami ikkita ish yuk profiliga ega:

ProfilUndan foydalaning .Izohlar
stableUzoq choʻkish va qayta tiklanishi mumkin boʻlgan ishlash tekshiruvlariIshlab chiqarish xavfsiz retseptlarni yaxshi koʻradi
chaosMuvaffaqiyat yoʻnalishidagi qoplamaNiyat bilan bekor qilingan retseptlarni oʻz ichiga oladi

Avvalo barqaror profildan foydalaning:

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

Boshlang ' ich chizigʻi allaqachon tushunilgan boʻlganda xaroba profilliga oʻting:

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

Shartnomalarni ishga tushirish retseptlari aniq ruxsat etilmagan taqdirda, barqaror harakatlarda o'chiritiladi:

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

--nexus ishga tushirilishi kerak bo'lganda ishlatilsin SORA Nexus oldindan o'rnatilgan ish maydonidan foydalanish.

Xatolarni nazorat qilish

Qachon --faulty noldan katta bo'lsa, kamida bitta xatolar xulosasi qo'llanilishi kerak. O'z navbatida, bo'l bayroqlarini o'chirib qo'yish mumkin. =false.

XatoCLI bayrog'iU nimalarni oʻz ichiga oladi ?
Kasallik va qayta ishga tushirish--fault-enable-crash-restartTengdoshlar jarayonining yoʻqolishi va tiklanishi
saqlashni olib tashlash va qayta ishga tushirish--fault-enable-wipe-storageYoʻqolgan mahalliy davlatdan tiklanish
Toʻgʻri yoʻllanma spam--fault-enable-spam-invalid-transactionsQabul qilish va rad etish yoʻllari
Tarmoqning kechiktirilishi--fault-enable-network-latencySekin gʻiybatlar va kechiktirilgan konsensus xabarlari
Tarmoq partitsiyasi--fault-enable-network-partitionVaqtinchalik ishonchli tengdoshlar izolyatsiyasi
P2P paketni yo'qotish--fault-enable-network-packet-lossFoydalanuvchilarning koʻpligi kamaydi
CPU bosim--fault-enable-cpu-stressMahalliy tasdiqlash va rejalashtirish bosimlari
Diskni toʻylash--fault-enable-disk-saturationMahalliy saqlash bosimi

Faqat paketni yo'qotish bilan o'tkazilishi uchun:

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 va --fault-window-end dan foydalanib, sug'orilgan xatoga qadar va undan keyin nazorat qilingan doimiy holat davrini saqlang. Bu ishga tushirish shovqinini xato ta'siridan ajratishni osonlashtiradi.

Ssenariy shakllari

Yuqori oqimdagi Izanami katalogida CLI profillariga umumiy blokcheyn aloqa muvaffaqiyatsizligining shakllari xarita qilinadi. Siz ularni bir xil bayroqlar bilan namunalashingiz mumkin:

SsenariyTipik shakl
Maqsadli yuklama--faulty 0, yuqori --tps, bitta ariza beruvchi, yuqori --max-inflight
Vaqtinchalik xatoFaqat cheklangan xatolar oynasining ichida crash / restartni qoʻllash
Paketning yoʻqolishiFaqat paketni yo'qotishni qo'llash, odatda andoza 75% yo'qotish darajasi bilan
Toʻxtatish va tiklanishHujum / qaytadan ishga tushirish bilan katta nosoz tenglamchilarni ishlatish
Liderning izolyatsiyasiToʻgʻri bitta nosoz tenglamani faqat tarmoq partitsiyasi yoki paket yoʻqotish xatolari bilan ishlating; Izanami Sumeragi yetakchi telemetriyani izlaydi

Bir vaqtning o'zida bitta o'zgaruvchini to'g'ri saqlang. Agar siz tengdoshlari sonini, ish yukining profilini, xatolar oynasini va TPS ni bir vaqtda o'zgartirsangiz, natijani tushuntirish qiyin bo'ladi.

Nimalarga e'tibor berish kerak

Dastur davomida ishlashni tasdiqlash uchun ishlatiladigan o'sha signallarni kuzatib boring:

  • har bir harakatlanuvchi tengdoshi bo'ylab blok balandligi rivojlanishi
  • taqdim etilgan, qabul qilingan, rad etilgan va muddati tugagach bo'lgan operatsiyalar
  • navbat chuqurligi, navbat to'ldirilishi va oxirgi nuqtadagi qarshi bosim
  • ko'rinish o'zgarishlari, tiklanish yo'llari, yo'qolgan bloklar va yo'q bo'lgan quorum sertifikatlari
  • RBC orqaga tushish, yig'ilishlar davom etishi va konsensus trafikining kamayishi yoki kechiktirilishi
  • CPU, xotira, disk va tengdoshlari ishlaydigan uy egasi tarmog'ining to'ldirilishi

Baholash kechiktirilganligi tahlili uchun asosiy to'plamdagi xatolar ro'yxatini yoqing:

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

Har bir blok block validation timings ni stateless_ms, execution_ms va total_ms bilan chiqarib tashlashi kerak. O'sha vaqtlarni p95 blok intervallari, ko'rinish o'zgarishi hisoblagichlari va navbatdagi bosim bilan taqqoslang.

Natijalarni tarjima qilish

Barcha tanlangan tengdoshlari bloklarni amalga oshirishni davom ettirganida, cheksiz orqaga tushmagan va xatolar konfiguratsiyalangan oynaning tugashidan so'ng yangi tiklanish faoliyatini keltirib chiqarishni to'xtatganda harakatni sog'lom deb hisoblang.

Yugurishni muvaffaqiyatsizlik deb hisoblang:

  • --progress-timeout dan ortiq bo'lgan bloklarning rivojlanish stalllari
  • Tengdoshlarning balandliklari farq qiladi va qayta konvergent bo'lmaydi
  • p95 kechikish vaqti --latency-p95-threshold dan oshadi
  • xatolar oynasi yopilgandan so'ng navbatlar davom etadi
  • rad etilgan yoki muddati tugagach bo'lgan operatsiyalar tanlangan ish haqi bilan tushuntirilmaydi
  • Parvardigorlarni qayta ishga tushirish, saqlashni tozalash yoki paket yo'qotishdan tiklanish uchun qo'lda tozalash kerak

Muvaffaqiyat yo'q bo'lganidan so'ng, bir xil urug' va bitta kamroq xato turi bilan qaytadan ishga tushiring. Bu ish yukini va vaqtni qayta tiklash imkonini beradi.