Tiêu đề gốc: " Mô hình giới thiệu Flood: Một công cụ mạnh mẽ để kiểm tra tải nút Blockchain 》
Tác giả gốc: Bão Slivkoff, Georgios Konstantopoulos
Nguồn gốc: TechFlow Deep Wave
Kiểm tra tải là công trình và phát triển Các bước chính để có hệ thống dữ liệu có khả năng phục hồi cao, hiệu suất cao. Tuy nhiên, thử nghiệm tải không được sử dụng rộng rãi trong phát triển cơ sở hạ tầng tiền điện tử. Chúng tôi rất vui mừng được giới thiệu Flood, một công cụ đo điểm chuẩn dành riêng cho phân tích hiệu suất điểm cuối RPC, để lấp đầy khoảng trống này.
Ban đầu, chúng tôi sử dụng Flood làm công cụ để tối ưu hóa Reth và hiểu được sự cân bằng giữa độ trễ và thông lượng của nó dưới các mức tải khác nhau. Sau đó, chúng tôi phát hiện ra rằng Flood, ngoài Reth, còn có giá trị thực tiễn đáng kể trong việc tối ưu hóa hiệu suất của nhiều loại cơ sở hạ tầng tiền điện tử.
Chúng ta hãy xem xét.
Kiểm tra tải đề cập đến việc đo lường những thay đổi về đặc tính hiệu suất của hệ thống khi nó bị ảnh hưởng bởi các khối lượng công việc khác nhau. Điểm mấu chốt đằng sau phương pháp này là khi hệ thống phải chịu mức tải ngày càng tăng, các số liệu hiệu suất như thông lượng, độ trễ và tỷ lệ lỗi thường giảm. Do đó, việc quan sát hiệu suất của hệ thống dưới các tải điều khiển khác nhau có thể tiết lộ thông tin như tắc nghẽn hệ thống, chế độ lỗi và công suất hiệu suất cuối cùng.
Thông tin thu được thông qua kiểm tra tải có thể được sử dụng theo nhiều cách. Trong khi một hệ thống đang được phát triển, việc kiểm tra tải có thể làm nổi bật những tắc nghẽn hệ thống nào cần được ưu tiên cải thiện. Khi so sánh hai hệ thống, kiểm tra tải có thể tiết lộ hệ thống nào hoạt động hiệu quả hơn hoặc đáng tin cậy hơn. Trong trường hợp đặc biệt, kiểm tra tải so sánh hai cấu hình phần cứng hoặc phần mềm khác nhau của một hệ thống. Trong mỗi trường hợp, kiểm tra tải cho phép phát triển hệ thống được tối ưu hóa cao.
Trọng tâm của chúng tôi là RPC, giao thức truyền thông thường được sử dụng để trích xuất dữ liệu từ các nút blockchain.
Hiện tại, cách phổ biến nhất để đo hiệu suất RPC không phải là kiểm tra tải mà là kiểm tra độ trễ: bạn gửi yêu cầu đến nút RPC và đo thời gian cần có thời gian để nhận được phản hồi. Bạn có thể tìm thấy các bài kiểm tra độ trễ cho các nhà cung cấp RPC khác nhau trên nhiều trang web khác nhau. Thật không may, loại thử nghiệm này cung cấp một cái nhìn hạn chế về hiệu suất của nút, vì nó tiết lộ rất ít về cách hệ thống hoạt động khi có tải.
Trong blockchain, khối lượng 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. Tải 10.000 yêu cầu mỗi giây sẽ gây áp lực lên hệ thống nhiều hơn tải 100 yêu cầu mỗi giây. Một biến tải khác là phương pháp RPC. Có các phương pháp RPC khác nhau cho từng loại dữ liệu được trích xuất từ nút blockchain. Ví dụ: khối so với giao dịch so với nhật ký so với dấu vết. Mỗi phương pháp RPC áp đặt một loại tải khác nhau lên hệ thống. Một số phương thức RPC bị ràng buộc bởi IO lưu trữ, trong khi các phương thức khác bị ràng buộc bởi CPU.
Chúng tôi đã phát triển một công cụ kiểm tra tải có tên là Flood dựa trên những nguyên tắc này. Không giống như thử nghiệm độ trễ, Flood cung cấp cái nhìn chưa từng có về đặc tính hiệu suất của điểm cuối RPC thông qua thử nghiệm tải và mở rộng phạm vi thử nghiệm cho tất cả các phương pháp RPC có liên quan.

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

Các chỉ số hiệu suất cụ thể giảm sút khi tải Cung cấp phong phú những hiểu biết sâu sắc tiết lộ những điểm nghẽn của hệ thống và khả năng thực hiện tối ưu.
Ngoài ra, Flood còn cung cấp các tính năng nâng cao để phù hợp với nhiều loại người dùng nâng cao khác nhau:
Lũ có thể sử dụng các phương án thử tải khác nhau, bao gồm: "stress testing" (tải tăng dần theo thời gian), "thử nghiệm cao điểm" (tải lớn đột ngột, sau đó là tải nhỏ hơn) và "thử nghiệm ngâm" (tải chạy dài).
Flood có thể sắp xếp các thử nghiệm tải để chạy tự nhiên trên mỗi nút RPC nhằm loại bỏ nhiễu do tắc nghẽn mạng gây ra.
Flood có chế độ kiểm tra "bình đẳng" để kiểm tra xem mỗi điểm cuối RPC có trả về cùng một phản hồi hay không.
Tại sao lại xây dựng lũ lụt?
Tại Paradigm, chúng tôi đang phát triển một triển khai nút mới có tên là Reth, với hiệu suất là một trong những mục tiêu chính của nó. 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 về hiệu suất của Reth xảy ra trong các khối lượng công việc và cấu hình hệ thống khác nhau. Sau đó, những nút thắt này được giải quyết. Với Flood, chúng tôi tạo ra một vòng phản hồi chặt chẽ giúp các nhà phát triển Reth có khả năng hiển thị rõ ràng về cách mọi thay đổi về cơ sở mã chuyển thành hiệu suất hệ thống từ đầu đến cuối.
Ngoài Reth, chúng tôi cho rằng Flood sẽ có thể giúp giải quyết nhiều câu hỏi chưa được giải đáp liên quan đến các nút RPC:
Thông số kỹ thuật phần cứng nào là quan trọng nhất khi chạy một nút? IO lưu trữ quan trọng như thế nào so với tốc độ RAM, dung lượng RAM và tốc độ CPU? RAID có đáng không?
Giới hạn tỷ lệ hiệu quả cho từng phương pháp RPC đối với từng nhà cung cấp RPC bên thứ ba là gì?
Máy khách nút nào cung cấp hiệu suất tốt nhất cho các loại khối lượng công việc khác nhau?
Trong bài viết này, Flood, một công cụ kiểm tra tải, được giới thiệu chủ yếu. Nó cung cấp một 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ù Flood ban đầu được xây dựng để tối ưu hóa sự phát triển của Reth, nhưng chúng tôi tin rằng nó sẽ trở thành một công cụ quan trọng để phát triển các loại cơ sở hạ tầng tiền điện tử hiệu suất cao khác. Chúng tôi mong muốn được thấy những người khác sử dụng Flood như thế nào để xây dựng hệ thống đáng tin cậy, hiệu suất cao của riêng họ.
Liên kết gốc
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia