
Paradigm ra mắt Flood: Công cụ mạnh mẽ để kiểm tra tải cho nút blockchain
Tuyển chọn TechFlowTuyển chọn TechFlow

Paradigm ra mắt Flood: Công cụ mạnh mẽ để kiểm tra tải cho nút blockchain
Bài viết này chủ yếu giới thiệu Flood, một công cụ kiểm tra tải cung cấp cái nhìn chưa từng có về đặc điểm hiệu suất của các nút blockchain.
Tác giả: Storm Slivkoff, Georgios Konstantopoulos
Biên dịch: TechFlow

Giới thiệu
Kiểm thử tải là bước thiết yếu để xây dựng các hệ thống dữ liệu có độ đàn hồi cao và hiệu suất vượt trội. Tuy nhiên, kiểm thử tải chưa được sử dụng rộng rãi trong phát triển cơ sở hạ tầng tiền mã hóa. Chúng tôi rất vui mừng giới thiệu Flood – một công cụ kiểm chuẩn chuyên biệt dành cho việc phân tích hiệu suất các điểm cuối RPC, nhằm lấp đầy khoảng trống này.
Ban đầu, chúng tôi phát triển Flood như một công cụ để tối ưu hóa Reth và hiểu rõ các sự đánh đổi giữa độ trễ và thông lượng của nó dưới những mức tải khác nhau. Sau đó, chúng tôi nhận ra rằng ngoài Reth, Flood còn mang lại giá trị thực tiễn đáng kể trong việc tối ưu hóa hiệu suất nhiều loại cơ sở hạ tầng tiền mã hóa khác.
Hãy cùng tìm hiểu sâu hơn.
Kiểm thử tải là gì và tại sao nó quan trọng?
Kiểm thử tải là việc đo đạc sự thay đổi các đặc tính hiệu suất của hệ thống khi chịu các mức tải công việc khác nhau. Nhận thức then chốt đằng sau phương pháp này là khi hệ thống chịu tải ngày càng lớn, các chỉ số hiệu suất như thông lượng, độ trễ và tỷ lệ lỗi thường sẽ suy giảm. Do đó, quan sát hành vi của hệ thống dưới các mức tải được kiểm soát có thể tiết lộ thông tin về điểm nghẽn, mô hình lỗi và sức chứa hiệu suất cuối cùng.
Thông tin thu được từ kiểm thử tải có thể được dùng vào nhiều mục đích. Khi hệ thống đang được phát triển, kiểm thử tải giúp làm nổi bật các điểm nghẽn cần ưu tiên cải thiện. Khi so sánh hai hệ thống, kiểm thử tải có thể cho biết hệ thống nào có hiệu suất hoặc độ tin cậy tốt hơn. Trong một trường hợp đặc biệt, kiểm thử tải có thể so sánh hai cấu hình phần cứng hoặc phần mềm khác nhau của cùng một hệ thống. Trong mọi trường hợp, kiểm thử tải đều hỗ trợ phát triển hệ thống được tối ưu hóa ở mức độ cao.
Làm thế nào để kiểm thử tải các nút blockchain?
Chúng tôi tập trung vào RPC – giao thức truyền thông thường dùng để truy xuất dữ liệu từ các nút blockchain.
Hiện nay, cách phổ biến nhất để đo hiệu suất RPC không phải là kiểm thử tải mà là kiểm thử độ trễ: bạn gửi một yêu cầu đến nút RPC và đo thời gian cần thiết để nhận được phản hồi. Các bài kiểm thử độ trễ như vậy đối với các nhà cung cấp RPC khác nhau có thể dễ dàng tìm thấy trên nhiều trang web. Tiếc thay, loại kiểm thử này chỉ cung cấp cái nhìn hạn chế về hiệu suất nút vì nó hầu như không tiết lộ hành vi của hệ thống khi chịu tải.
Trong blockchain, tải công việc có thể thay đổi theo hai cách quan trọng. Biến cổ điển là kích thước. Một tải 10.000 yêu cầu mỗi giây gây áp lực lên hệ thống lớn hơn nhiều so với tải 100 yêu cầu mỗi giây. Biến tải thứ hai là phương thức RPC. Mỗi loại dữ liệu trích xuất từ nút blockchain tương ứng với một phương thức RPC khác nhau, ví dụ như khối, giao dịch, nhật ký hay dấu vết. Mỗi phương thức RPC tạo ra một dạng tải khác nhau lên hệ thống. Một số phương thức bị giới hạn bởi I/O lưu trữ, trong khi những phương thức khác lại bị giới hạn bởi CPU.
Flood là gì?
Dựa trên những nguyên tắc này, chúng tôi đã phát triển một công cụ kiểm thử tải có tên Flood. Khác với kiểm thử độ trễ, Flood cung cấp cái nhìn chưa từng có về đặc tính hiệu suất của các điểm cuối RPC bằng cách thực hiện kiểm thử tải và mở rộng phạm vi kiểm thử sang tất cả các phương thức RPC liên quan.

Flood gồm ba thành phần cơ bản:
-
Động cơ tạo lời gọi: Flood tạo ra một tập hợp lớn các lời gọi RPC được tham số hóa, lấy mẫu ngẫu nhiên theo phân bố tương tự các loại tải công việc blockchain khác nhau. Flood sử dụng bộ dữ liệu Paradigm Data Portal để đảm bảo bao phủ toàn bộ lịch sử blockchain.
-
Động cơ kiểm thử tải: Sau đó, Flood điều phối Vegeta (một công cụ kiểm thử tải hiệu suất cao viết bằng Go) để thực hiện kiểm thử tải lên các điểm cuối RPC bằng các lời gọi này.
-
Động cơ báo cáo: Sau khi thực hiện kiểm thử, Flood tổng hợp kết quả bằng các biểu đồ, bảng biểu và báo cáo đa dạng. Các bản tóm tắt này dễ dàng tích hợp vào các kịch bản và dữ liệu.
Mỗi thành phần đều có thể cấu hình cao, cho phép Flood bao quát nhiều tình huống và môi trường kiểm thử khác nhau.
Flood có thể làm được gì?
Trong quá trình vận hành thông thường, người dùng chỉ định các phương thức RPC cần kiểm thử và danh sách các điểm cuối RPC. Ví dụ, bạn có thể muốn kiểm tra hiệu suất của phương thức eth_getLogs trên hai phiên bản khác nhau của Reth. Flood sẽ chạy các mức tải kiểm soát khác nhau để thử nghiệm các điểm cuối RPC này. Chẳng hạn, nó có thể chạy eth_getLogs ở tốc độ 1.000, 2.000, 4.000 và 8.000 yêu cầu mỗi giây. Flood sau đó sẽ hiển thị các bảng và biểu đồ tóm tắt cách các chỉ số hiệu suất thay đổi theo tải. Kết quả đầu ra sẽ trông như thế này:

Cách mà các chỉ số hiệu suất suy giảm dưới tải cung cấp những hiểu biết sâu sắc, có thể tiết lộ các điểm nghẽn hệ thống và khả năng hiệu suất tối đa.
Ngoài ra, Flood còn cung cấp các tính năng nâng cao phục vụ nhiều loại người dùng chuyên sâu:
-
Flood có thể sử dụng các kế hoạch kiểm thử tải khác nhau, bao gồm: "kiểm thử căng thẳng" (tăng dần tải theo thời gian), "kiểm thử đỉnh" (tải đột ngột lớn rồi giảm xuống nhỏ) và "kiểm thử ngâm" (chạy tải trong thời gian dài).
-
Flood có thể điều phối kiểm thử tải chạy ở chế độ gốc trên từng nút RPC để loại bỏ nhiễu do nghẽn mạng.
-
Flood có chế độ kiểm thử "đồng nhất", kiểm tra xem mỗi điểm cuối RPC có trả về phản hồi giống nhau hay không.
Tại sao lại xây dựng Flood?
Tại Paradigm, chúng tôi đang phát triển một triển khai nút mới có tên Reth, trong đó hiệu suất là một trong những mục tiêu chính. Chúng tôi đã phát triển Flood để mô tả chi tiết các đặc tính hiệu suất của Reth. Chúng tôi đã sử dụng Flood để phát hiện nhiều điểm nghẽn hiệu suất của Reth xuất hiện dưới các tải công việc và cấu hình hệ thống khác nhau. Sau đó, chúng tôi đã khắc phục các điểm nghẽn này. Nhờ Flood, chúng tôi tạo ra một vòng phản hồi khép kín, giúp các nhà phát triển Reth có cái nhìn rõ ràng cao về việc bất kỳ thay đổi nào trong mã nguồn ảnh hưởng ra sao đến hiệu suất hệ thống tổng thể.
Ngoài Reth, chúng tôi tin rằng Flood sẽ có thể giúp giải quyết nhiều câu hỏi chưa có lời đáp liên quan đến các nút RPC:
-
Khi vận hành nút, thông số phần cứng nào là quan trọng nhất? Tầm quan trọng của I/O lưu trữ so với tốc độ RAM, dung lượng RAM và tốc độ CPU là như thế nào? RAID có đáng để đầu tư không?
-
Tỷ lệ giới hạn hiệu quả của mỗi phương thức RPC đối với từng nhà cung cấp RPC bên thứ ba là bao nhiêu?
-
Khách hàng nút nào cung cấp hiệu suất tốt nhất cho các loại tải công việc khác nhau?
Kết luận
Trong bài viết này, chúng tôi đã giới thiệu Flood – một công cụ kiểm thử tải cung cấp cái nhìn chưa từng có về đặc tính hiệu suất của các nút blockchain. Mặc dù ban đầu Flood được xây dựng để tối ưu hóa việc phát triển Reth, nhưng chúng tôi tin rằng nó sẽ trở thành một công cụ quan trọng trong việc phát triển nhiều loại cơ sở hạ tầng tiền mã hóa hiệu suất cao khác. Chúng tôi mong chờ được thấy cộng đồng sử dụng Flood như thế nào để xây dựng các hệ thống hiệu suất cao và đáng tin cậy của riêng họ.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News














