區塊鏈性能測試與優化-上篇
一級標題
一級標題
一級標題
大綱
一級標題
一級標題
基本概念
區塊鏈的性能測試,方法論上與傳統的性能測試沒有不同。性能測試有很多混亂的概念,這裡我列出本文描述概念做一些定義。
二級標題
二級標題
二級標題
性能測試的定義
性能測試是對系統或者服務的性能指標建立監控策略,在特定場景下執行測試,分析判斷性能瓶頸並調優,最終得出性能結果來評估系統或者服務的性能指標是否滿足既定值。這裡結合cosmos-sdk 的simapp 區塊鏈來解釋。
1. 需要明確指標,一般指兩類指標: 技術指標、業務指標。技術指標一般是TPS,響應時間,資源利用率,對應到區塊鏈一般是指每秒可以處理多少筆交易?這些交易的響應時間或者統計結果是多少?在這種情況下系統使用的資源處於什麼狀態?期望滿足的業務指標,應該來源於生產環境統計,以cosmos-sdk 的生產應用cosmos-hub 為例,其現階段出塊時間大約6 秒,每個區塊中的交易數大多數小於10 。期望的業務指標設定為TPS 為100 是較為合理的。 (這麼低的TPS 其實是與cosmos-hub 的目標有關,因為其主要關注點在鏈的互操作性)。
2. 測試模型: 是真實場景的抽象,描述業務模型是什麼樣的。以cosmos-hub 為例大致就是,分佈在全球的區塊鏈節點,在驗證者節點約500 個,活躍驗證者節點約為200 的情況下處理交易。測試時可以按比例抽象實際情況。
3. 測試方案: 包括測試環境,測試數據,測試模型,性能指標等。對比區塊鏈系統的測試,就是確定測試架構,準備好如1000 個用戶,每個用戶餘額1000 stake 這樣的內容。
7. 要有結果報告:報告內容當然就是實際的指標數據。
二級標題
二級標題
二級標題
性能場景分類
4. 異常性能場景:在強壓力之下,模擬異常。
二級標題
二級標題
1. RT, Response Time
2. HPS, Hits Per Second
3. TPS, Transactions Per Second,二級標題
4. QPS, Queries Per Second
5. PV, Page View
6. Throughput
7. IOPS, Input/Output Operations Per Second
重要的性能指標
性能測試的指標有很多,比如:
二級標題
二級標題
其他
其他
其他
其他
1. 一般需要在什麼時候做性能測試。
a. 項目上線前,估計系統承載能力
二級標題Why blockchain performance is hard to measure二級標題
延遲
延遲
延遲
延遲
延遲的這段時間的起點和終點如何定義?
1. 起點是用戶點擊提交還是交易到達內存池?
二級標題
二級標題
吞吐量
基本工具
基本工具
二級標題
二級標題Jmeter二級標題
4. …
壓力工具
壓力工具一般用
或者特定應用專用測試工具如下:
Jmeter 支持的Sampler 支持有HTTP,對gRPC 協議的支持需要藉助插件jmeter-grpc-request
二級標題
二級標題Prometheus二級標題https://prometheus.io/assets/architecture.png監控工具
監控工具一般用cadvisor。
圖片stress-ng圖片
一級標題
一級標題
一級標題
性能調優
圖片
二級標題
分析工具https://www.brendangregg.com/Perf/linux_perf_tools_full.png圖片
二級標題
磁盤IO 一般會導致系統瓶頸,磁盤IO 棧比較長,分析起來難度不小。熟悉IO 棧,有助於我們發現問題(https://www.thomas-krenn.com/en/wikiEN/images/c/c 2/Linux-storage-stack-diagram_v 6.2.pdf)
圖片
圖片


