Skip to content

Изанамимен сынақ жүргізу

Izanami - жоғарғы ағыстағы Iroha жұмыс кеңістігіндегі хаос желісін оркестрлеуші. Ол біржола шығарылатын жергілікті Iroha кластерді іске қосып, конфигурацияланатын жұмыс жүктемесін ұсынады және таңдалған теңгерімдерге қателерді енгізеді, сондықтан операторлар желі бақыланатын сәтсіздік кезінде алға басуын жалғастыра бере ме екендігін тексеруі мүмкін.

Izanami-ді өндіріс алдындағы төзімділік тексеру, регрессиялық репродукция және консенсус көйлеу үшін қолданыңыз. Оны өндірістік желіге бағыттамаңыз: құрал басталған теңгерімдерді иелену үшін жасалған, соның ішінде теңгерімдік қайта іске қосу, сақтау шұңқырлары, жасанды пакеттердің жоғалуы және жергілікті CPU немесе диск қысымы.

Алдын ала талаптар

Izanami жүгіру Iroha көз қоймасы, Бұл құжаттама қоймасынан алынбаған:

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

Бинарлық желідегі әріптестерді құруға және өңдеуге айрықша рұқсат етілуі тиіс. TUI емес әрбір орындалу үшін --allow-net өтсін немесе TUI-де allow_net әрекетін қосу керек.

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

Интерактивті орындалу конфигурациясы үшін:

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

Izanami TUI және CLI параметрлерін пайдаланушы баптаулар каталогында сақтап қалады, сондықтан алдыңғы профильді қайта пайдаланмас бұрын көрсетілген параметрлерді тексеріңіз.

Базалық көрсеткіш

Қатерлі кемшіліктерді қосудан бұрын бір қайталанатын бастапқы көрсеткішпен бастаңыз:

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

Бұл орындалу тек қана кластер сұралған блок мақсатына жетіп, уақыт үзілісі ішінде алға басуын жалғастыра отырып және p95 блок аралық шегінен төмен болғанда ғана жүзеге асырылады.

Бұйрықты, тұқымды, Iroha тапсырманы, теңгерімнің санын, қате теңгерімінің санын, жұмыс жүктемесі профилін, мақсатты TPS және созылмалылық шегін журналдармен жазыңыз. Бұл мәндерсіз басқа оператор сол сәтсіздік үлгісін қайталай алмайды.

Жұмыс жүктемесі профильдері

Izanami-де екі жұмыс жүктемесі профилі бар:

ПрофильОны пайдаланыңыз .Ескертулер
stableҰзақ суармалы жүгіру және қайталанатын өнімділік тексерулеріӘртүрлі рецепттерді жақсы көреді
chaosЖеңіс жолдарын қамтуҚасқырсыз рецепттерді қамтиды

Алдымен тұрақты профильді пайдаланыңыз:

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

Негізгі көрсеткішті түсінген кезде хаос бейініне ауысу:

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

Келiсiм-шартты орналастыру рецепттерi, егер нақты рұқсат етiлмесе, тұрақты режимде рұқсат етілмейді:

bash
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Жергілікті сақтау қысымы

Тек пакеттерді жоғалтқан жүгіру үшін:

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 және --fault-window-end пайдалану арқылы инжекцияланған сәтсіздікке дейін және одан кейін тұрақты күйдегі бақылау кезеңін сақтаңыз. Бұл іске қосу шуын қате әсерінен ажыратуды жеңілдетеді.

Сценарийдің пішіндері

Өскемен Izanami каталогы CLI профильдеріне арналған жалпы блокчейн байланыс сәтсіздіктерінің нысандарын карталайды.

СценарийҮлгілі пішіні
Нысаналы жүктеме--faulty 0, жоғары --tps, бір тапсырыс беруші, жоғары --max-inflight
Уақытша сәтсіздікҚалпына келтіру/қайта бастауды шектелген қате терезесі ішінде ғана рұқсат ету
Пакет жоғалуыТек пакеттерді жоғалтуды рұқсат етіңіз, әдетте депалттық 75% жоғалу деңгейімен
Аяқтау және қалпына келтіруҚатты / қайта бастау кезінде үлкен қателер тобы қолданылсын
Басшыларды оқшаулауТек желі бөлінісі немесе пакеттерді жоғалтпау қателері бар бір кемшілікті теңгерімін қолданыңыз; Izanami Sumeragi жетекші телеметрияны орындайды

Бір мезгілде бір айнымалыны тұрақты ұстаңыз. Егер сіз теңгерімнің санын, жұмыс жүктемесінің профилін, қате терезесін және TPS бір рет өзгертсеңіз, нәтиже түсіндіру қиын болады.

Нені қарау керек?

Жүгіру кезінде өнімділікті растау үшін пайдаланылатын бірдей сигналдарды байқаңыз:

  • Блок биіктігі бойынша жетістіктер әр жүретін теңдіктер арқылы
  • Ұсынылған, қабылданған, қабылданбаған және мерзімі өткен операциялар
  • Кезектің тереңдігі, кезектің толылығы және соңғы нүктелердің кері қысымы
  • көрініс өзгерістері, қалпына келтіру жолдары, жоғалған блоктар және жоғалған кворум куәліктері
  • RBC артта қалу, кезек күту және консенсус қозғалысының төмендеуі немесе кейінге қалдыру
  • CPU, жады, дискі және достармен жұмыс істейтін хосттағы желіге толысу

Валидациялау кешіктірімін талдау үшін негізгі циклдың дебог журналдарын рұқсат етіңіз:

bash
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 аспайды
  • қате терезесі жабылғаннан кейін кезектер жүгірудің қалған бөлігінде өседі
  • қабылданбаған немесе мерзімі біткен операциялар таңдалған жұмыс жүктемесімен түсіндірілмейді
  • Пайдаланушыларды қайта бастау, сақтауды өшіру немесе пакеттерді жоғалту үшін қолмен тазалау қажет.

Жеңіс болғаннан кейін, сол тұқыммен және бір кемшілік түрімен қайта жүгіріңіз. Бұл жұмыс жүктемесін және уақытты қайта қалпына келтіруге мүмкіндік береді, ал сәтсіздіктің бетін кезіктіреді.