Զիզանամիի հետ քաոսային փորձարկում
Izanami- ը քաոսային ցանցի նվագախմբողն է վերածառային Iroha աշխատանքային տարածքում: Այն սկսում է մեկ անգամ օգտագործվող տեղական Iroha կլաստերը, ներկայացնում է կազմաձեւելի աշխատանքային բեռնվածք եւ սխալներ ներարկում ընտրված զուգընկերներին, որպեսզի օպերատորները կարողանան ստուգել, թե արդյոք ցանցը շարունակում է առաջընթաց կատարել վերահսկվող ձախողության դեպքում.
Օգտագործեք Izanami- ն նախապատրաստական դիմացկունության ստուգումների, ռեգրեսիոն վերարտադրման եւ կոնսենսուսային կարգավորման համար: Մի ուղղեք այն արտադրական ցանցի վրա. գործիքն նախագծված է պատկանելու այն զուգընկերներին, որոնք այն սկսում է, ներառյալ զուգընտրական վերսկսումը, պահեստային զամբյուղները, արհեստական փաթեթների կորուստը եւ տեղական CPU կամ սկավառակային ճնշումը:
Նախադրյալներ
Գործարկել Izanami- ն Iroha աղբյուրային պահեստից , այլ ոչ թե այս փաստաթղթերի պահեստից.
git clone https://github.com/hyperledger-iroha/iroha.git
cd iroha
cargo build -p izanamiԲինարային համակարգը պետք է բացարձակապես թույլատրվի ստեղծել եւ մանիպուլյացիոն ցանցային զուգընկերներ: Անցրեք --allow-net յուրաքանչյուր ոչ-TUI գործարկման համար, կամ կարողացրեք allow_net ՝ TUI
cargo run -p izanami -- --allow-net --peers 4 --faulty 1 --duration 120sԻնտերակտիվ գործարկման կոնֆիգուրացիայի համար.
cargo run -p izanami -- --tui --allow-netIzanami- ն մնում է TUI եւ CLI կարգավորումները օգտագործողի կազմաձեւման ցուցակի ներքո, այնպես որ վերանայեք ցուցադրված կարգավորումները նախորդ պրոֆիլը կրկին օգտագործելուց առաջ.
Հիմնական գիծը
Սկսեք մեկ վերարտադրելի ելակետից, նախքան ծանր սխալների ավելացումը.
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Այս ընթացքը հաջողվում է միայն այն դեպքում, եթե կլաստերը հասնում են պահանջված բլոկի նպատակին, շարունակում են առաջընթաց կատարել ժամանակահատվածում եւ մնում են p95 ընտրական բլոկային միջակայքի շեմից ցածր:
Գրանցեք հրամանը, սերմը, Iroha պարտավորությունը, զուգընկերների քանակը, սխալ զուգընկերի քանակը, աշխատանքային բեռի պրոֆիլը, թիրախը TPS եւ լատենցիայի շեմը օրագրերի հետ: Առանց այդ արժեքների մեկ այլ օպերատոր չի կարող կրկնել նույն ձախողման ձեւակերպումը.
Աշխատանքային բեռնվածության պրոֆիլներ
Izanami- ն ունի երկու աշխատանքային բեռի պրոֆիլներ.
| Պրոֆիլ | Օգտագործեք այն | Նշումներ |
|---|---|---|
stable | Երկար ցրտային երթեւեկություն եւ կրկնվող կատարողականի ստուգումներ | Անդրադառնում է կատարման անվտանգ բաղադրատոմսերին: |
chaos | Չափազանցության ուղու ապահովում | Ներառում է միտումնավոր անվավեր բաղադրատոմսեր |
Նախ օգտագործեք կայուն պրոֆիլը.
cargo run -p izanami -- --allow-net --workload-profile stable --seed 42Փոխեք քաոսային պրոֆիլին, երբ արդեն հասկացված է հիմնական գիծը.
cargo run -p izanami -- --allow-net --workload-profile chaos --seed 42Պայմանագրային տեղակայման բաղադրատոմսերը անջատվում են կայուն երթեւեկություններում, եթե բացարձակապես թույլատրված չէ.
cargo run -p izanami -- \
--allow-net \
--workload-profile stable \
--allow-contract-deploy-in-stableՕգտագործել --nexus, երբ գործարկումը պետք է օգտագործի ներկառուցված SORA Nexus նախապայմանները վերածնային աշխատանքային տարածքից:
Սխալների վերահսկողություն
Երբ --faulty-ը մեծ է զրոյից, պետք է ակտիվացվի առնվազն մեկ սխալ սցենար: Սխալը փոխանցում է նախընտրականին եւ կարող է անջատել բուլյան դրոշները ՝ օգտագործելով =false.
| Հանցանք | CLI դրոշ | Ինչ է այն անում |
|---|---|---|
| Կործանում եւ վերագործարկում | --fault-enable-crash-restart | Պարբերական գործընթացի կորուստ եւ վերականգնում |
| Սրբեք պահեստը եւ վերսկսեք | --fault-enable-wipe-storage | Գործազրկված տեղական պետությունից վերականգնումը |
| Թույլատրելի գործարքի սփամ | --fault-enable-spam-invalid-transactions | ընդունման եւ մերժման ուղիները |
| Համացանցի ուշացում | --fault-enable-network-latency | դանդաղ կատակերգություն եւ հետաձգված համաձայնության ուղերձներ |
| Համացանցի բաժանում | --fault-enable-network-partition | Ժամանակավոր վստահելի զուգընկերների մեկուսացում |
| P2P փաթեթների կորուստ | --fault-enable-network-packet-loss | Հավելվածների շրջանակի երթեւեկությունը նվազեց |
| CPU սթրես | --fault-enable-cpu-stress | Տեղական վավերացման եւ ժամանակացույցի ճնշման |
| Դիսքի լեցունությունը | --fault-enable-disk-saturation | Տեղային պահեստավորման ճնշում |
Միայն փաթեթների կորուստի համար:
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 ՝ նախքան եւ հետո ներարկված անջատման վերահսկվող կայուն վիճակի ժամանակահատվածը պահպանելու համար: Սա հեշտացնում է մեկնարկային աղմուկը տարբերել սխալի ազդեցությունից:
Սցենարի ձեւեր
Upstream Izanami կատալոգը քարտեզավորում է բլոկչեյնային հաղորդակցության ձախողման սովորական ձեւերը CLI պրոֆիլների: Կարող եք դրանք մոդելավորել նույն դրոշներով.
| Սցենար | Տիպիկ ձեւ |
|---|---|
| Նպատակված բեռը | --faulty 0, բարձր --tps, մեկ ներկայացուցիչ, մեծ --max-inflight |
| Պահանջական ձախողում | Աջակցել կործանում / վերագործարկում միայն սահմանված խափանման պատուհանի մեջ |
| Փաթեթների կորուստ | Հնարավորացնել միայն փաթեթների կորուստը, սովորաբար կանխատեսված 75%-ի կորստի մակարդակով |
| Դադարեցնել եւ վերականգնել | Օգտագործեք խոշոր պրոֆեսիոնալ փաթեթներ, որոնք կործանում են / վերսկսվում են |
| Առաջնորդների մեկուսացում | Օգտագործեք ճշգրիտ մեկ սխալ զուգընկեր, միայն ցանցի բաժանումների կամ փաթեթների կորստի սխալներով: Izanami- ն հետեւում է Sumeragi առաջատար հեռաչափին |
Պահպանեք մեկ փոփոխականը միանգամից: Եթե դուք փոխում եք զուգընկերների քանակը, աշխատանքային բեռնվածության պրոֆիլը, սխալ պատուհանը եւ TPS նույն ընթացքի ընթացքում, արդյունքը դժվար է մեկնաբանել.
Ինչ պետք է դիտել
Գնացքի ընթացքում հետեւեք նույն ազդանշաններին, որոնք օգտագործվում են կատարման հավաստիացման համար.
- բլոկի բարձրության առաջընթացը յուրաքանչյուր վազող զուգահեռի վրա
- ներկայացված, ընդունված, մերժված եւ ժամկետով ավարտված գործարքները
- ականջի խորությունը, ականջների հագեցածությունը եւ վերջնական կետերի հետագա ճնշումը
- տեսանյութի փոփոխությունները, վերականգնման ուղիները, բացակայող բլոկները եւ կորած քվորումային վկայականները
- RBC հետապնդում, սպասվող նստաշրջաններ եւ նվազեցված կամ հետաձգված համաձայնության երթեւեկություն
- CPU, հիշողություն, սկավառակ եւ ցանցի լցվածությունը հյուրընկալողի վրա, որը գործարկում է զուգահեռները
Վավերացման հետաձգման վերլուծության համար կարողացրեք հիմնական փուլերի ապարդյունների արձանագրություն.
RUST_LOG=iroha_core::sumeragi::main_loop=debug \
cargo run -p izanami -- --allow-net --seed 42Յուրաքանչյուր բլոկ պետք է արտանետի block validation timings ՝ stateless_ms, execution_ms եւ total_ms: Համեմատեք այդ ժամանակավորումները p95 բլոկային միջակայքների հետ, տեսքի փոփոխության հաշվիչների եւ հերթի ճնշման հետ, նախքան փոխելը կոնսենսուսային ժամանակավորները:
Արդյունքները մեկնաբանելու համար
Բարեւեք վազումը որպես առողջ, երբ բոլոր ընտրված զուգընկերները շարունակում են բլոկներ կատարել, հետապնդումները չեն աճում առանց սահմանի, եւ սխալները դադարեցնում են վերականգնման նոր գործունեություն առաջացնելը կազմավորված պատուհանի ավարտից հետո:
Բարեկամել վազումը որպես ձախողում, եթե
- բլոկի առաջընթացի պահերը, որոնք ավելի երկար են, քան
--progress-timeout - զուգընկերների բարձրությունը տարբերվում է եւ չի վերագնահատվում
- p95 ուշացում գերազանցում է
--latency-p95-threshold - հերթերը աճում են մնացած ընթացքի ընթացքում, երբ փակվում է խախտումների պատուհանը
- մերժված կամ ժամկետով ավարտված գործարքները չեն բացատրվում ընտրված աշխատանքային բեռնվածությամբ
- զուգընկերային վերսկսման, պահեստավորման ջնջման կամ փաթեթների կորստի վերականգնման համար անհրաժեշտ է ձեռքով մաքրել:
Սխալվելուց հետո կրկնեք նույն սերմնաբուծությունը եւ մեկ պակաս պակասի տիպը: Դա պահում է աշխատանքային բեռնվածությունն ու ժամանակավորությունը կրկնվող, մինչդեռ նեղացնում է սխալների մակերեւույթը.