本文主要介紹了 Flood,一種負載測試工具,它為區塊鏈節點的性能特徵提供了前所未有的視圖。
負載測試是構建開發彈性高、性能優秀資料系統的關鍵步驟。然而,負載測試在加密貨幣基礎設施開發中並沒有得到廣泛應用。我們非常高興地引入了 Flood,這是一款專門針對 RPC 端點性能分析的基準測試工具,以填補這一空白。
最初,我們將 Flood 作為一種工具來優化 Reth,並瞭解其在不同負載下的延遲和輸送量權衡。後來,我們發現除了 Reth 之外,Flood 在優化許多類型的加密貨幣基礎設施性能方面具有重要的實用價值。
讓我們一起看看吧。
負載測試是指測量系統受不同工作負載影響時性能特徵的變化。這種方法背後的關鍵見解是,當系統承受越來越多的負載時,輸送量、延遲和錯誤率等性能指標通常會降低。因此,觀察系統在不同控制負載下的表現可以揭示系統瓶頸、故障模式和最終性能容量等資訊。
通過負載測試獲得的資訊可以用於許多方面。當系統正在開發時,負載測試可以突出顯示哪些系統瓶頸需要優先改進。當比較兩個系統時,負載測試可以揭示哪個系統更具性能或可靠性。作為其中一種特殊情況,負載測試可以比較單個系統的兩個不同硬體或軟體配置。在每種情況下,負載測試都可以實現高度優化的系統開發。
我們的重點是 RPC,這是通常用於從區塊鏈節點提取資料的通信協定。
目前,衡量 RPC 性能最常見的方法不是負載測試,而是延遲測試:您向 RPC 節點發送一個請求,並測量獲得回應所需的時間。各種 RPC 提供商的延遲測試可以在各個網站上找到。不幸的是,這種類型的測試對節點性能提供了有限的視圖,因為它幾乎沒有揭示系統在負載下的行為。
在區塊鏈中,工作負載可以通過兩種重要方式變化。經典的變數是大小。每秒 10,000 個請求的負載對系統的壓力比每秒 100 個請求的負載更大。另一個負載變數是 RPC 方法。對於從區塊鏈節點中提取的每種類型的資料,都有不同的 RPC 方法。例如,塊 vs 事務 vs 日誌 vs 蹤跡。每個 RPC 方法對系統施加不同類型的負載。一些 RPC 方法受存儲 IO 限制,而其他方法受 CPU 限制。
我們根據這些原則開發了一個負載測試工具,稱為 Flood。與延遲測試不同,Flood 通過負載測試以及擴展測試覆蓋範圍到所有相關的 RPC 方法,為 RPC 端點的性能特徵提供了前所未有的視圖。
Flood 由三個基本元件組成:
調用生成引擎:Flood 生成大量參數化的 RPC 調用集,隨機採樣分佈類似於不同類型的區塊鏈工作負載。Flood 利用 Paradigm Data Portal 資料集確保完全覆蓋區塊鏈歷史。
負載測試引擎:然後,Flood 編排 Vegeta(用 Go 編寫的高性能負載測試工具)使用這些調用進行對 RPC 端點的負載測試。
報告引擎:Flood 在執行測試後,使用各種圖表、表格和報告總結結果。這些摘要易於集成到腳本和資料中。
每個元件都可以高度配置,使 Flood 能夠涵蓋廣泛的測試場景和環境。
在 Flood 的常規操作過程中,用戶指定要測試的 RPC 方法以及 RPC 端點列表。例如,您可能想測試 Reth 的兩個版本的 eth_getLogs 的性能。Flood 將運行不同的控制負載來測試這些 RPC 端點。例如,它可能以每秒 1,000、2,000、4,000 和 8,000 個請求的速度運行 eth_getLogs。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 來構建自己的高性能、可靠的系統。
免責聲明:
本文觀點僅代表作者個人觀點,不構成本平台的投資建議,本平台不對文章信息準確性、完整性和及時性作出任何保證,亦不對因使用或信賴文章信息引發的任何損失承擔責任
South Korea: Upbit Investigated for Over 500,000 KYC Violations
MacBook Users with Intel Chips Urged to Update for Enhanced Security
Solana-Based Trading Terminal DEXX Hacked, Over $21M in User Losses
South Korea to Enforce 20% Crypto Tax in 2025 with Increased Exemption Limit
0.00