BTC
ETH
HTX
SOL
BNB
Xem thị trường
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Mô hình: Công cụ kiểm tra tải chi tiết Lũ lụt

深潮TechFlow
特邀专栏作者
2023-06-09 03:30
Bài viết này có khoảng 1877 từ, đọc toàn bộ bài viết mất khoảng 3 phút
Lũ lụt 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 chuỗi khối.
Tóm tắt AI
Mở rộng
Lũ lụt 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 chuỗi khối.

Nguyên tác giả: "Introducing flood: a load testing tool for benchmarking EVM nodes

giới thiệu

Biên dịch nguyên văn: Deep Tide TechFlow

giới thiệu

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, 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 được 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, chúng tôi 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 đó, chúng tôi 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ử.

Hãy xem qua.

Load testing là gì và tại sao nó lại quan trọng?

Kiểm tra tải đề 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 thử nghiệm tải có thể được sử dụng theo nhiều cách. Trong khi hệ thống đang được phát triển, thử nghiệm tải 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, thử nghiệm tải 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, kiểm tra 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 một hệ thống. Trong mỗi trường hợp, thử nghiệm tải 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 nút blockchain?

Trọng tâm của chúng tôi 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 nút chuỗi khối.

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 tới 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 chuỗi khối, 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 thức 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ừ ​​nút chuỗi khối. 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.

Lụt là gì?

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 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 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ũ 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 chuỗi khối 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ử chuỗi khối.

  • Công cụ kiểm tra tải: Sau đó, Flood điều phối Vegeta (một công cụ kiểm tra tải 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.

Lụt 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: "thử nghiệm căng thẳng" (tăng dần tải trọng theo thời gian), "thử nghiệm đột biến" (tải trọng lớn đột ngột theo sau là tải trọng nhỏ) và "thử nghiệm ngâm" (tải trọng chạy dài).

  • Flood có thể sắp xếp các thử nghiệm tải để 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 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à 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 điểm hoạt động của Reth. Chúng tôi đã 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, 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ị 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, chúng tôi 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 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? 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?

  • Tóm lại là


Tóm lại là

Trong bài báo này, chúng tôi chủ yếu giới thiệu về Flood, một công cụ kiểm tra tải 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 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 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ọ.


Paradigm
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk
Tài khoản chính thức
https://twitter.com/OdailyChina
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk
Tìm kiếm
Mục lục bài viết
Tải ứng dụng Odaily Nhật Báo Hành Tinh
Hãy để một số người hiểu Web3.0 trước
IOS
Android