BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

กระบวนทัศน์: เครื่องมือทดสอบโหลดโดยละเอียด Flood

深潮TechFlow
特邀专栏作者
2023-06-09 03:30
บทความนี้มีประมาณ 1877 คำ การอ่านทั้งหมดใช้เวลาประมาณ 3 นาที
Flood ให้มุมมองที่ไม่เคยมีมาก่อนเกี่ยวกับลักษณะการทำงานของโหนด blockchain
สรุปโดย AI
ขยาย
Flood ให้มุมมองที่ไม่เคยมีมาก่อนเกี่ยวกับลักษณะการทำงานของโหนด blockchain

ผู้เขียนต้นฉบับ: "Introducing flood: a load testing tool for benchmarking EVM nodes

แนะนำ

การรวบรวมข้อความต้นฉบับ: Deep Tide TechFlow

แนะนำ

การทดสอบโหลดเป็นขั้นตอนสำคัญในการสร้างและพัฒนาระบบข้อมูลที่มีความยืดหยุ่นสูงและประสิทธิภาพที่ยอดเยี่ยม อย่างไรก็ตาม การทดสอบโหลดไม่ได้ใช้กันอย่างแพร่หลายในการพัฒนาโครงสร้างพื้นฐานของสกุลเงินดิจิทัล เรารู้สึกตื่นเต้นที่จะแนะนำ Flood ซึ่งเป็นเครื่องมือการเปรียบเทียบสำหรับการวิเคราะห์ประสิทธิภาพปลายทาง RPC เพื่อเติมเต็มช่องว่างนี้

ในขั้นต้น เราใช้ Flood เป็นเครื่องมือในการเพิ่มประสิทธิภาพ Reth และทำความเข้าใจกับเวลาในการตอบสนองและการแลกเปลี่ยนปริมาณงานภายใต้การโหลดที่แตกต่างกัน ต่อมา เราค้นพบว่า Flood มียูทิลิตี้ที่สำคัญในการเพิ่มประสิทธิภาพของโครงสร้างพื้นฐานสกุลเงินดิจิทัลหลายประเภทนอกเหนือจาก Reth

ลองมาดูกัน

การทดสอบโหลดคืออะไรและเหตุใดจึงสำคัญ

การทดสอบโหลดหมายถึงการวัดการเปลี่ยนแปลงคุณลักษณะด้านประสิทธิภาพของระบบเนื่องจากขึ้นอยู่กับปริมาณงานที่แตกต่างกัน ข้อมูลเชิงลึกที่สำคัญเบื้องหลังแนวทางนี้คือเมตริกประสิทธิภาพ เช่น ทรูพุต เวลาแฝง และอัตราข้อผิดพลาดโดยทั่วไปจะลดลงเมื่อระบบมีโหลดเพิ่มขึ้น ดังนั้น การสังเกตลักษณะการทำงานของระบบภายใต้โหลดการควบคุมที่แตกต่างกันสามารถเปิดเผยข้อมูล เช่น คอขวดของระบบ โหมดความล้มเหลว และความสามารถด้านประสิทธิภาพขั้นสูงสุด

ข้อมูลที่ได้รับจากการทดสอบโหลดสามารถนำไปใช้ได้หลายวิธี ในขณะที่ระบบกำลังพัฒนา การทดสอบโหลดสามารถเน้นว่าคอขวดของระบบใดจำเป็นต้องได้รับการปรับปรุงให้ดีขึ้น เมื่อเปรียบเทียบสองระบบ การทดสอบโหลดสามารถบอกได้ว่าระบบใดมีประสิทธิภาพหรือเชื่อถือได้มากกว่ากัน ในกรณีพิเศษนี้ การทดสอบโหลดสามารถเปรียบเทียบการกำหนดค่าฮาร์ดแวร์หรือซอฟต์แวร์ที่แตกต่างกันสองแบบของระบบเดียว ในแต่ละกรณี การทดสอบโหลดจะช่วยให้การพัฒนาระบบมีประสิทธิภาพสูงสุด

จะโหลดทดสอบโหนด blockchain ได้อย่างไร?

เรามุ่งเน้นที่ RPC ซึ่งเป็นโปรโตคอลการสื่อสารที่ใช้กันทั่วไปในการดึงข้อมูลจากโหนดบล็อกเชน

ปัจจุบัน วิธีทั่วไปในการวัดประสิทธิภาพ RPC ไม่ใช่การทดสอบโหลด แต่เป็นการทดสอบเวลาแฝง: คุณส่งคำขอไปยังโหนด RPC และวัดว่าใช้เวลานานเท่าใดจึงจะได้รับการตอบกลับ การทดสอบเวลาแฝงสำหรับผู้ให้บริการ RPC ต่างๆ สามารถพบได้บนเว็บไซต์ต่างๆ น่าเสียดายที่การทดสอบประเภทนี้ให้มุมมองที่จำกัดเกี่ยวกับประสิทธิภาพของโหนด เนื่องจากการทดสอบนี้แสดงให้เห็นเพียงเล็กน้อยเกี่ยวกับลักษณะการทำงานของระบบภายใต้ภาระงาน

ในบล็อกเชน ปริมาณงานอาจแตกต่างกันไปในสองวิธีที่สำคัญ ตัวแปรคลาสสิกคือขนาด โหลด 10,000 คำขอต่อวินาทีเน้นระบบมากกว่าโหลด 100 คำขอต่อวินาที ตัวแปรโหลดอื่นคือวิธี RPC มีวิธี RPC ที่แตกต่างกันสำหรับข้อมูลแต่ละประเภทที่ดึงมาจากโหนดบล็อกเชน ตัวอย่างเช่น บล็อก vs ธุรกรรม vs บันทึก vs ติดตาม แต่ละวิธีของ RPC จะวางโหลดประเภทต่างๆ กันบนระบบ เมธอด RPC บางเมธอดถูกผูกไว้กับหน่วยความจำ IO ในขณะที่เมธอดอื่นๆ ถูกผูกไว้กับ CPU

น้ำท่วมคืออะไร?

เราพัฒนาเครื่องมือทดสอบโหลดที่เรียกว่า Flood ตามหลักการเหล่านี้ ซึ่งแตกต่างจากการทดสอบเวลาแฝง Flood ให้มุมมองที่ไม่เคยมีมาก่อนเกี่ยวกับลักษณะการทำงานของจุดสิ้นสุด RPC ผ่านการทดสอบโหลดและขยายขอบเขตการทดสอบไปยังวิธีการ RPC ที่เกี่ยวข้องทั้งหมด

น้ำท่วมประกอบด้วยสามองค์ประกอบพื้นฐาน:


  • Call Generation Engine: Flood สร้างการเรียก RPC แบบกำหนดพารามิเตอร์ชุดใหญ่พร้อมการกระจายการสุ่มตัวอย่างที่คล้ายกับปริมาณงานบล็อกเชนประเภทต่างๆ Flood ใช้ชุดข้อมูล Paradigm Data Portal เพื่อให้แน่ใจว่าครอบคลุมประวัติ blockchain อย่างสมบูรณ์

  • เครื่องมือทดสอบโหลด: จากนั้น Flood จะประสาน Vegeta (เครื่องมือทดสอบโหลดประสิทธิภาพสูงที่เขียนด้วย Go) เพื่อใช้การเรียกเหล่านี้เพื่อโหลดจุดสิ้นสุด RPC ทดสอบ

  • Reporting Engine: หลังจากที่ Flood ดำเนินการทดสอบ มันจะสรุปผลลัพธ์โดยใช้แผนภูมิ ตาราง และรายงานต่างๆ ข้อมูลสรุปเหล่านี้รวมเข้ากับสคริปต์และข้อมูลได้ง่าย


แต่ละส่วนประกอบสามารถกำหนดค่าได้สูง ทำให้ Flood ครอบคลุมสถานการณ์การทดสอบและสภาพแวดล้อมที่หลากหลาย

น้ำท่วมทำอะไรได้บ้าง?

ระหว่างการทำงานปกติของ Flood ผู้ใช้ระบุเมธอด RPC ที่จะทดสอบและรายการของ RPC endpoints ตัวอย่างเช่น คุณอาจต้องการทดสอบประสิทธิภาพของ eth_getLogs ของ Reth สองเวอร์ชัน Flood จะเรียกใช้โหลดการควบคุมที่แตกต่างกันเพื่อทดสอบจุดสิ้นสุด RPC เหล่านี้ ตัวอย่างเช่น อาจรัน eth_getLogs ที่ 1,000, 2,000, 4,000 และ 8,000 คำขอต่อวินาที จากนั้น Flood จะแสดงตารางและกราฟโดยสรุปว่าเมตริกประสิทธิภาพแตกต่างกันไปตามโหลดอย่างไร ผลลัพธ์มีลักษณะดังนี้:

วิธีเฉพาะในการที่เมตริกประสิทธิภาพลดลงภายใต้โหลดให้ข้อมูลเชิงลึกที่สามารถเปิดเผยคอขวดของระบบและความสามารถด้านประสิทธิภาพขั้นสูงสุด

นอกเหนือจากนั้น Flood ยังเสนอคุณสมบัติขั้นสูงเพื่อให้เหมาะกับผู้ใช้ระดับสูงทุกประเภท:


  • Flood สามารถใช้แผนการทดสอบโหลดที่แตกต่างกัน รวมถึง: "การทดสอบความเครียด" (ค่อยๆ เพิ่มโหลดเมื่อเวลาผ่านไป) "การทดสอบแบบพุ่งสูง" (การโหลดขนาดใหญ่อย่างฉับพลันตามด้วยโหลดขนาดเล็ก) และ "การทดสอบการแช่" (การโหลดที่ใช้เวลานาน)

  • Flood สามารถจัดการการทดสอบโหลดให้รันในโหมดเนทีฟบนโหนด RPC แต่ละโหนดเพื่อกำจัดสัญญาณรบกวนที่เกิดจากคอขวดของเครือข่าย

  • Flood มีโหมดทดสอบ "ความเท่าเทียมกัน" ที่ตรวจสอบว่าปลายทาง RPC แต่ละจุดส่งคืนการตอบสนองเดียวกัน


 

ทำไมต้องสร้างน้ำท่วม?

ที่ Paradigm เรากำลังพัฒนาการปรับใช้โหนดใหม่ที่เรียกว่า Reth และประสิทธิภาพเป็นหนึ่งในเป้าหมายหลัก เราพัฒนา Flood เพื่อให้รายละเอียดลักษณะการทำงานของ Reth เราใช้ Flood เพื่อเปิดเผยปัญหาคอขวดของประสิทธิภาพ Reth จำนวนมากภายใต้ภาระงานและการกำหนดค่าระบบต่างๆ จากนั้น แก้ไขปัญหาคอขวดเหล่านั้น ด้วย Flood เราได้สร้างวงจรป้อนกลับที่รัดกุมซึ่งช่วยให้นักพัฒนา Reth สามารถมองเห็นได้อย่างชัดเจนว่าการเปลี่ยนแปลงของโค้ดเบสใดๆ ส่งผลต่อประสิทธิภาพของระบบตั้งแต่ต้นทางถึงปลายทางอย่างไร

นอกจาก Reth แล้ว เราคิดว่า Flood จะสามารถช่วยแก้ปัญหาคำถามที่ยังไม่มีคำตอบที่เกี่ยวข้องกับโหนด RPC ได้:


  • ข้อมูลจำเพาะของฮาร์ดแวร์ใดที่สำคัญที่สุดเมื่อรันโหนด IO ที่เก็บข้อมูลมีความสำคัญเพียงใดเมื่อเทียบกับความเร็วของ RAM ความจุของ RAM และความเร็วของ CPU RAID คุ้มค่าหรือไม่

  • ขีดจำกัดอัตราที่มีผลบังคับใช้ต่อวิธี RPC ต่อผู้ให้บริการ RPC บุคคลที่สามคืออะไร

  • สรุปแล้ว


สรุปแล้ว

ในบทความนี้ เราจะแนะนำ Flood ซึ่งเป็นเครื่องมือทดสอบโหลดที่ให้มุมมองที่ไม่เคยมีมาก่อนเกี่ยวกับลักษณะการทำงานของโหนดบล็อกเชน แม้ว่าเดิมที Flood ถูกสร้างขึ้นเพื่อเพิ่มประสิทธิภาพการพัฒนา Reth แต่เราเชื่อว่ามันจะกลายเป็นเครื่องมือสำคัญสำหรับการพัฒนาโครงสร้างพื้นฐานสกุลเงินดิจิทัลที่มีประสิทธิภาพสูงประเภทอื่นๆ เราหวังว่าจะได้เห็นวิธีที่ผู้อื่นใช้ Flood เพื่อสร้างระบบที่มีประสิทธิภาพสูงและเชื่อถือได้ของตนเอง


Paradigm
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
ค้นหา
สารบัญบทความ
อันดับบทความร้อน
Daily
Weekly
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android