ከኢዛናሚ ጋር የሁከት ሙከራ
Izanami በቅድመ-መንገድ Iroha የስራ ቦታ ውስጥ ካኦስኔት ኦርኬስተራተር ነው ። አንድ ነጠላ የአካባቢያዊ Iroha ክላስተር ይጀምራል ፣ ሊዋቀር የሚችል የሥራ ጭነት ያቀርባል ፣ እና የተመረጡ እኩዮችን ስህተቶችን ያስገባል ስለዚህ ኦፕሬተሮች አውታረ መረቡ በተቆጣጠረው ውድቀት ወቅት እድገት እያደረገ መሆኑን ማረጋገጥ ይችላሉ ።
ኢዛናሚን ለቅድመ ምርት የመቋቋም ችሎታ ፍተሻዎች ፣ ወደ ኋላ መመለስ እና የጋራ ስምምነት ማስተካከያ ይጠቀሙ። በማምረቻ አውታረመረብ ላይ አያመለክቱት-መሳሪያው የሚጀምራቸውን እኩዮች እንዲይዝ የተቀየሰ ነው ፣ ይህም የእኩዮችን ዳግም ማስጀመር ፣ የማከማቻ wipes ፣ ሰው ሰራሽ ፓኬቶች ማጣት እና አካባቢያዊ 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 እና የዘገየበትን ደመወዝ በመመዝገብ ላይ ያኑሩ ። እነዚህ እሴቶች ከሌሉ ሌላ ኦፕሬተር ተመሳሳይ የስህተት ንድፍ እንደገና ማጫወት አይችልም።
የስራ ጫና መገለጫዎች
ኢዛናሚ ሁለት የሥራ ጫና መገለጫዎች አሉት-
| መገለጫ | ይጠቀሙበት | ማስታወሻዎች |
|---|---|---|
stable | ረዥም የመጠጥ ሩጫዎች እና እንደገና ሊታዩ የሚችሉ አፈፃፀም ምርመራዎች | በሥራ ላይ የማይውሉ የምግብ አዘገጃጀት መመሪያዎችን ይወዳል። |
chaos | የክፍያ መንገድ ሽፋን | intentionally invalid recipes ያካትታል |
በመጀመሪያ የተረጋጋውን መገለጫ ይጠቀሙ:
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ሩጫው ከቅድመ ፍሰት የስራ ቦታ የተካተቱትን 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 | አካባቢያዊ የማከማቻ ግፊት |
ለፓኬት ኪሳራ-ብቻ ሩጫ:
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 መዝገቦችን ያስችሉ:
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ይበልጣል - የተበላሸ መስኮት ከተዘጋ በኋላ ረድፎቹ ለቀሪው ሩጫ ይጨምራሉ።
- ውድቅ የተደረጉ ወይም ጊዜው ያለፈባቸው ግብይቶች በተመረጠው የስራ ጫና ምክንያት አይብራሩም።
- የእኩዮች ዳግም ማስጀመር፣ የማከማቻ ማጽዳት ወይም የፓኬት ኪሳራ መልሶ ማግኛ በእጅ ማፅዳት ይጠይቃል
ከስህተት በኋላ ተመሳሳይ ዘርን እና አንድ የተበላሸ ዓይነት እንደገና ይጀምሩ ። ይህ የስራ ጭነት እና ጊዜውን እንደገና ሊተገበር የሚችል ሆኖ ሳለ የስህተት ወለሉን እየቀነሰ ነው።