Tin nóng ⇢

Paradigm giới thiệu công cụ Flood để kiểm tra tải node EVM

Load testing là một bước quan trọng trong việc xây dựng và phát triển hệ thống dữ liệu có khả năng phục hồi cao và hiệu suất tuyệt vời. Tuy nhiên, load testing 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ử. Paradigm giới thiệu Flood, một công cụ đo điểm chuẩn để phân tích hiệu suất điểm cuối RPC, để lấp đầy khoảng trống này.

Ban đầu, Paradigm sử dụng Flood như một công cụ để tối ưu hóa Reth và hiểu được sự đánh đổi về độ trễ cũng như thông lượng của nó dưới các mức tải khác nhau. Sau đó, Paradigm phát hiện ra rằng ngoài Reth, Flood có tiện ích đá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ử.

Load testing là gì và tầm quan trọng?

Load testing đề cập đến việc đo lường các thay đổi về đặc tính hiệu suất của một hệ thống khi hệ thống phải chịu các khối lượng công việc khác nhau. Thông tin chi tiết chính đằng sau phương pháp này là các chỉ số hiệu suất như thông lượng, độ trễ và tỷ lệ lỗi thường giảm khi hệ thống phải chịu tải ngày càng tăng. Do đó, việc quan sát cách hệ thống hoạt độ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à khả năng thực hiện cuối cùng.

Thông tin thu được thông qua load testing có thể được sử dụng theo nhiều cách. Trong khi hệ thống đang được phát triển, load testing có thể làm nổi bật những nút cổ chai nào của hệ thống cần được ưu tiên cải thiện. Khi so sánh hai hệ thống, load testing có thể tiết lộ hệ thống nào hiệu quả hơn hoặc đáng tin cậy hơn. Trong trường hợp đặc biệt này, load testing 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 một hệ thống. Trong mỗi trường hợp, load testing cho phép phát triển hệ thống được tối ưu hóa cao.

Làm cách nào để tải thử nghiệm các node blockchain?

Trọng tâm của Paradigm là RPC, đây là giao thức truyền thông thường được sử dụng để trích xuất dữ liệu từ các node blockchain.

Hiện tại, cách phổ biến nhất để đo hiệu suất của RPC không phải là load testing mà là kiểm tra độ trễ: bạn gửi yêu cầu đến một nút RPC và đo thời gian cần thiết để 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 các 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 dưới tải.

Trong một 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 gây căng thẳng cho 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 thức RPC khác nhau cho từng loại dữ liệu được trích xuất từ ​​node blockchain. Ví dụ: khối so với giao dịch so với nhật ký so với theo dõi. Mỗi phương pháp RPC đặt một loại tải khác nhau trên hệ thống. Một số phương thức RPC bị ràng buộc IO bộ nhớ, trong khi các phương thức khác bị ràng buộc CPU.

Flood là gì?

Paradigm đã phát triển một công cụ load testing có tên là Flood dựa trên các nguyên tắc này. Không giống như thử nghiệm độ trễ, Flood cung cấp một cái nhìn chưa từng có về các đặc tính hiệu suất của các điểm cuối RPC thông qua load testing 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.

Flood 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 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 sử dụng bộ dữ liệu Cổng dữ liệu mô hình để đảm bảo bao quát toàn bộ lịch sử blockchain.
  • Công cụ load testing: Sau đó, Flood điều phối Vegeta (một công cụ load testing hiệu suất cao được viết bằng Go) để sử dụng các lệnh gọi này để tải các điểm cuối RPC kiểm tra.
  • 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 các biểu đồ, bảng và báo cáo khác nhau. Những bản tóm tắt này dễ dàng 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 khác nhau.

Flood có thể làm gì?

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 sẽ được 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 ở 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ác chỉ số hiệu suất thay đổi như thế nào theo tải. Đầu ra trông như thế này:

Các cách thức cụ thể mà số liệu hiệu suất xuống cấp khi tải cung cấp thông tin chi tiết phong phú có thể tiết lộ các nút thắt cổ chai của hệ thống và khả năng thực hiện cuối cùng.

Ngoài ra, Flood còn cung cấp các tính năng nâng cao phù hợp với mọi đối tượng người dùng thành thạo:

  • Flood có thể sử dụng các kế hoạch thử tải khác nhau, bao gồm: stress testing (tăng dần tải trọng theo thời gian), spike testing (tải trọng lớn đột ngột theo sau là tải trọng nhỏ) và soak testing (tải trọng chạy dài).
  • Flood có thể sắp xếp các load testing để chạy ở chế độ gốc trên mỗi nút RPC nhằm loại bỏ tiếng ồn 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 phải xây dựng Flood?

Paradigm đang phát triển một triển khai node mới có tên là Reth và hiệu suất là một trong những mục tiêu chính. Paradigm đã phát triển Flood để mô tả chi tiết các đặc điểm hoạt động của Reth. Paradigm đã sử dụng Flood để phát hiện nhiều tắc nghẽn hiệu suất của Reth trong các khối lượng công việc và cấu hình hệ thống khác nhau. Sau đó, giải quyết những tắc nghẽn đó. Với Flood, Paradigm đã 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ị cao về cách mọi thay đổi cơ sở mã chuyển thành hiệu suất hệ thống từ đầu đến cuối.

Ngoài Reth, Paradigm nghĩ rằng Flood sẽ có thể giúp giải quyết nhiều câu hỏi chưa được trả lời liên quan đến các node RPC:

  • Thông số kỹ thuật phần cứng nào là quan trọng nhất khi chạy một node? Lưu trữ IO 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 mỗi phương pháp RPC cho mỗi nhà cung cấp RPC bên thứ ba là bao nhiêu?
  • Node client 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?

Tóm lại

Trong bài báo này, Paradigm chủ yếu giới thiệu về Flood, một công cụ load testing cung cấp một cái nhìn chưa từng có về các đặ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 Paradigm 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. Paradigm mong muốn được xem cách những người khác sử dụng Flood để xây dựng các hệ thống đáng tin cậy, hiệu suất cao của riêng họ.

Có thể bạn quan tâm

Mục lục