Изанамимен сынақ жүргізу
Izanami - жоғарғы ағыстағы Iroha жұмыс кеңістігіндегі хаос желісін оркестрлеуші. Ол біржола шығарылатын жергілікті Iroha кластерді іске қосып, конфигурацияланатын жұмыс жүктемесін ұсынады және таңдалған теңгерімдерге қателерді енгізеді, сондықтан операторлар желі бақыланатын сәтсіздік кезінде алға басуын жалғастыра бере ме екендігін тексеруі мүмкін.
Izanami-ді өндіріс алдындағы төзімділік тексеру, регрессиялық репродукция және консенсус көйлеу үшін қолданыңыз. Оны өндірістік желіге бағыттамаңыз: құрал басталған теңгерімдерді иелену үшін жасалған, соның ішінде теңгерімдік қайта іске қосу, сақтау шұңқырлары, жасанды пакеттердің жоғалуы және жергілікті CPU немесе диск қысымы.
Алдын ала талаптар
Izanami жүгіру Iroha көз қоймасы, Бұл құжаттама қоймасынан алынбаған:
git clone https://github.com/hyperledger-iroha/iroha.git
cd iroha
cargo build -p izanamiБинарлық желідегі әріптестерді құруға және өңдеуге айрықша рұқсат етілуі тиіс. TUI емес әрбір орындалу үшін --allow-net өтсін немесе TUI-де allow_net әрекетін қосу керек.
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Келiсiм-шартты орналастыру рецепттерi, егер нақты рұқсат етiлмесе, тұрақты режимде рұқсат етілмейді:
cargo run -p izanami -- \
--allow-net \
--workload-profile stable \
--allow-contract-deploy-in-stable--nexus орындалған кезде ағынды жұмыс кеңістігінен кіріктірілген SORA Nexus әдетті параметрлерін пайдалану керек.
Қателерді бақылау
--faulty нөлден үлкен болған кезде, кем дегенде бір қате сценарийі рұқсат етілуі тиіс. Қате әдетті түрде рұқсат етілгенге ауысады және boolean байрақтарын =false арқылы өшіруге болады.
| Қатесі | CLI белдеуі | Ол не істейді ? |
|---|---|---|
| Қалпына келтіру және қайта бастау | --fault-enable-crash-restart | Бауырлас процесінің жоғалуы мен қалпына келтіруі |
| Сақтауды өшіріп , қайта бастаңыз | --fault-enable-wipe-storage | Жергiлiктi мемлекеттiң жоғалтуынан қалпына келтiру |
| Жарамсыз транзакция спамы | --fault-enable-spam-invalid-transactions | Қабылдау және бас тарту жолдары |
| Желідегі кешіктіру | --fault-enable-network-latency | Сүлгілі уәделер мен кейінге қалдырылған консенсус хаттары . |
| Желілік бөлініс | --fault-enable-network-partition | Уақытша сенімді әріптестерден оқшаулану |
| P2P пакеттер жоғалуы | --fault-enable-network-packet-loss | Қолданбалар жүйесінің трафигі төмендеді |
| CPU стресс | --fault-enable-cpu-stress | Жергiлiктi растау және жоспарлау қысымы |
| Дисктің толылығы | --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 пайдалану арқылы инжекцияланған сәтсіздікке дейін және одан кейін тұрақты күйдегі бақылау кезеңін сақтаңыз. Бұл іске қосу шуын қате әсерінен ажыратуды жеңілдетеді.
Сценарийдің пішіндері
Өскемен 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аспайды - қате терезесі жабылғаннан кейін кезектер жүгірудің қалған бөлігінде өседі
- қабылданбаған немесе мерзімі біткен операциялар таңдалған жұмыс жүктемесімен түсіндірілмейді
- Пайдаланушыларды қайта бастау, сақтауды өшіру немесе пакеттерді жоғалту үшін қолмен тазалау қажет.
Жеңіс болғаннан кейін, сол тұқыммен және бір кемшілік түрімен қайта жүгіріңіз. Бұл жұмыс жүктемесін және уақытты қайта қалпына келтіруге мүмкіндік береді, ал сәтсіздіктің бетін кезіктіреді.