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:
git clone https://github.com/hyperledger-iroha/iroha.git
cd iroha
cargo build -p izanamiIkkilamchiga 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.
cargo run -p izanami -- --allow-net --peers 4 --faulty 1 --duration 120sInteraktiv ishga tushirish konfiguratsiyasi uchun:
cargo run -p izanami -- --tui --allow-netIzanami 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:
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 42Ushbu 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:
| Profil | Undan foydalaning . | Izohlar |
|---|---|---|
stable | Uzoq choʻkish va qayta tiklanishi mumkin boʻlgan ishlash tekshiruvlari | Ishlab chiqarish xavfsiz retseptlarni yaxshi koʻradi |
chaos | Muvaffaqiyat yoʻnalishidagi qoplama | Niyat bilan bekor qilingan retseptlarni oʻz ichiga oladi |
Avvalo barqaror profildan foydalaning:
cargo run -p izanami -- --allow-net --workload-profile stable --seed 42Boshlang ' ich chizigʻi allaqachon tushunilgan boʻlganda xaroba profilliga oʻting:
cargo run -p izanami -- --allow-net --workload-profile chaos --seed 42Shartnomalarni ishga tushirish retseptlari aniq ruxsat etilmagan taqdirda, barqaror harakatlarda o'chiritiladi:
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.
| Xato | CLI bayrog'i | U nimalarni oʻz ichiga oladi ? |
|---|---|---|
| Kasallik va qayta ishga tushirish | --fault-enable-crash-restart | Tengdoshlar jarayonining yoʻqolishi va tiklanishi |
| saqlashni olib tashlash va qayta ishga tushirish | --fault-enable-wipe-storage | Yoʻqolgan mahalliy davlatdan tiklanish |
| Toʻgʻri yoʻllanma spam | --fault-enable-spam-invalid-transactions | Qabul qilish va rad etish yoʻllari |
| Tarmoqning kechiktirilishi | --fault-enable-network-latency | Sekin gʻiybatlar va kechiktirilgan konsensus xabarlari |
| Tarmoq partitsiyasi | --fault-enable-network-partition | Vaqtinchalik ishonchli tengdoshlar izolyatsiyasi |
| P2P paketni yo'qotish | --fault-enable-network-packet-loss | Foydalanuvchilarning koʻpligi kamaydi |
| CPU bosim | --fault-enable-cpu-stress | Mahalliy tasdiqlash va rejalashtirish bosimlari |
| Diskni toʻylash | --fault-enable-disk-saturation | Mahalliy saqlash bosimi |
Faqat paketni yo'qotish bilan o'tkazilishi uchun:
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:
| Ssenariy | Tipik shakl |
|---|---|
| Maqsadli yuklama | --faulty 0, yuqori --tps, bitta ariza beruvchi, yuqori --max-inflight |
| Vaqtinchalik xato | Faqat cheklangan xatolar oynasining ichida crash / restartni qoʻllash |
| Paketning yoʻqolishi | Faqat paketni yo'qotishni qo'llash, odatda andoza 75% yo'qotish darajasi bilan |
| Toʻxtatish va tiklanish | Hujum / qaytadan ishga tushirish bilan katta nosoz tenglamchilarni ishlatish |
| Liderning izolyatsiyasi | Toʻ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:
RUST_LOG=iroha_core::sumeragi::main_loop=debug \
cargo run -p izanami -- --allow-net --seed 42Har 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-timeoutdan ortiq bo'lgan bloklarning rivojlanish stalllari- Tengdoshlarning balandliklari farq qiladi va qayta konvergent bo'lmaydi
- p95 kechikish vaqti
--latency-p95-thresholddan 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.