Skip to content

ከኢዛናሚ ጋር የሁከት ሙከራ ​

Izanami በቅድመ-መንገድ Iroha የስራ ቦታ ውስጥ ካኦስኔት ኦርኬስተራተር ነው ። አንድ ነጠላ የአካባቢያዊ Iroha ክላስተር ይጀምራል ፣ ሊዋቀር የሚችል የሥራ ጭነት ያቀርባል ፣ እና የተመረጡ እኩዮችን ስህተቶችን ያስገባል ስለዚህ ኦፕሬተሮች አውታረ መረቡ በተቆጣጠረው ውድቀት ወቅት እድገት እያደረገ መሆኑን ማረጋገጥ ይችላሉ ።

ኢዛናሚን ለቅድመ ምርት የመቋቋም ችሎታ ፍተሻዎች ፣ ወደ ኋላ መመለስ እና የጋራ ስምምነት ማስተካከያ ይጠቀሙ። በማምረቻ አውታረመረብ ላይ አያመለክቱት-መሳሪያው የሚጀምራቸውን እኩዮች እንዲይዝ የተቀየሰ ነው ፣ ይህም የእኩዮችን ዳግም ማስጀመር ፣ የማከማቻ wipes ፣ ሰው ሰራሽ ፓኬቶች ማጣት እና አካባቢያዊ 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 እና የዘገየበትን ደመወዝ በመመዝገብ ላይ ያኑሩ ። እነዚህ እሴቶች ከሌሉ ሌላ ኦፕሬተር ተመሳሳይ የስህተት ንድፍ እንደገና ማጫወት አይችልም።

የስራ ጫና መገለጫዎች ​

ኢዛናሚ ሁለት የሥራ ጫና መገለጫዎች አሉት-

መገለጫይጠቀሙበትማስታወሻዎች
stableረዥም የመጠጥ ሩጫዎች እና እንደገና ሊታዩ የሚችሉ አፈፃፀም ምርመራዎችበሥራ ላይ የማይውሉ የምግብ አዘገጃጀት መመሪያዎችን ይወዳል።
chaosየክፍያ መንገድ ሽፋንintentionally invalid recipes ያካትታል

በመጀመሪያ የተረጋጋውን መገለጫ ይጠቀሙ:

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

የመነሻው መስመር ቀድሞውኑ ከተረዳ በኋላ ወደ ሁከት መገለጫ ይሂዱ:

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

በግልጽ ካልተፈቀደ በስተቀር የውል ማሰማሪያ የምግብ አዘገጃጀት መመሪያዎች በተረጋጋ ሩጫዎች ውስጥ ያሰናክላሉ:

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

ሩጫው ከቅድመ ፍሰት የስራ ቦታ የተካተቱትን SORA Nexus ነባሪ መስፈርቶች ሲጠቀም --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አካባቢያዊ የማከማቻ ግፊት

ለፓኬት ኪሳራ-ብቻ ሩጫ:

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 በመጠቀም ከመተጣጠሉ በፊት እና በኋላ ቁጥጥር የሚደረግበት ቋሚ ሁኔታን ለመጠበቅ ይጠቀሙ። ይህ የመነሻ ጫጫታ ከስህተት ውጤት መለያየት ቀላል ያደርገዋል።

የቅጽበታዊ ገጽ እይታዎች ​

የ Upstream Izanami ካታሎግ ወደ CLI መገለጫዎች የተለመዱ blockchain ግንኙነት ውድቀት ቅርጾች ካርታዎች. አንተ ተመሳሳይ ባንዲራዎች ጋር ሞዴል እነሱን ይችላሉ:

ሁኔታውየተለመደ ቅርጽ
የታለመ ጭነት--faulty 0, ከፍተኛ --tps, አንድ አቀራረብ, ከፍተኛ --max-inflight
ጊዜያዊ አለመሳካትማሽቆልቆል / ዳግም ማስጀመር የሚቻለው በተወሰነ የክፍያ መስኮት ውስጥ ብቻ ነው።
የፓኬት ኪሳራየፓኬት ኪሳራ ብቻ ያስችለዋል, አብዛኛውን ጊዜ ነባሪው 75% ኪሳራ መጠን ጋር
ማቆም እና ማገገምበአደጋ / ዳግም ማስጀመር ውስጥ ትልቅ የተሳሳተ-አቻ ህዝብ ይጠቀሙ
የአመራር መለያየትብቻ የኔትወርክ ክፍልፍል ወይም ፓኬጅ-ማጣት ስህተቶች ጋር በትክክል አንድ የተሳሳተ ባልደረባ ይጠቀሙ; Izanami የሚከተለው ነው Sumeragi መሪ ቴሌሜትሪ

በአንድ ጊዜ አንድ ተለዋዋጭን ቋሚ ያድርጉ። በተመሳሳይ ሩጫ ውስጥ የእኩዮችን ብዛት ፣ የስራ ጭነት መገለጫ ፣ የስህተት መስኮት እና TPS ን ከቀየሩ ውጤቱን ለመተርጎም አስቸጋሪ ነው።

ምን መመልከት ይኖርብናል? ​

በሩጫው ወቅት ለስራ አፈፃፀም ማረጋገጫ ጥቅም ላይ የዋሉትን ተመሳሳይ ምልክቶች ይከታተሉ።

  • በእያንዳንዱ ሩጫ እኩዮች ላይ የብሎክ ቁመት እድገት
  • የቀረቡት፣ ተቀባይነት ያገኙት፣ ውድቅ የተደረጉት እና ጊዜው ያለፈባቸው ግብይቶች
  • ረድፍ ጥልቀት፣ ረድፍ መጨናነቅ እና የመጨረሻው ነጥብ የኋላ ግፊት
  • የመመልከቻ ለውጦች፣ መልሶ ማግኛ መንገዶች፣ የጎደሉ ብሎኮች እና የጎደሉ የኳሮም የምስክር ወረቀቶች
  • RBC የኋላ ዥረት፣ የተጠበቁ ስብሰባዎች እና የመግባቢያ ትራፊክ መቀነስ ወይም መዘግየት
  • CPU, ማህደረ ትውስታ, ዲስክ, እና የአውታረ መረብ እኩዮችን እየሮጠ አስተናጋጅ ላይ saturation

ለማረጋገጫ-ዘግይቶነት ትንተና, ዋና ሉፕ debugging መዝገቦችን ያስችሉ:

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 ይበልጣል
  • የተበላሸ መስኮት ከተዘጋ በኋላ ረድፎቹ ለቀሪው ሩጫ ይጨምራሉ።
  • ውድቅ የተደረጉ ወይም ጊዜው ያለፈባቸው ግብይቶች በተመረጠው የስራ ጫና ምክንያት አይብራሩም።
  • የእኩዮች ዳግም ማስጀመር፣ የማከማቻ ማጽዳት ወይም የፓኬት ኪሳራ መልሶ ማግኛ በእጅ ማፅዳት ይጠይቃል

ከስህተት በኋላ ተመሳሳይ ዘርን እና አንድ የተበላሸ ዓይነት እንደገና ይጀምሩ ። ይህ የስራ ጭነት እና ጊዜውን እንደገና ሊተገበር የሚችል ሆኖ ሳለ የስህተት ወለሉን እየቀነሰ ነው።