筆記六十二:叢集壓力測試
CrazyZard發表於2020-04-20
- 壓力測試的目的
- 容量規劃 / 效能優化 / 版本間效能比較 / 效能問題診斷
- 確定系統穩定性,考察系統功能極限和隱患
- 壓力測試的方法與步驟
- 測試計劃(確定測試場景和測試資料集)
- 指令碼開發
- 測試環境搭建(不同的軟硬體配置) & 執行測試
- 分析比較結果
- 測試目標
- 測試叢集的讀寫效能 / 做叢集容量規劃
- 對 ES 配置引數進行修改,評估優化效果
- 修改 Mapping 和 Setting,對資料建模進行優化,並測試評估效能改進
- 測試 ES 新版本,結合實際場景和老版本進行比較,評估是否進行升級
- 測試資料
- ES 本身提供了 REST API,所以,可以通過很多傳統的效能測試工具
- Load Runner (商業軟體,支援錄製+重放 + DSL )
- JMeter ( Apache 開源 ,Record & Play)
- Gatling (開源,支援寫 Scala 程式碼 + DSL)
- 專門為 Elasticsearch 設計的工具
- ES Pref & Elasticsearch-stress-test
- Elastic Rally
- Elastic 官方開源,基於 Python 3 的壓力測試工具
- 功能介紹
- 自動建立,配置,執行測試,並且銷燬 ES 叢集
- 支援不同的測試資料的比較,也支援將資料匯入 ES 叢集,進行二次分析
- 支援測試時指標資料的蒐集,方便對測試結果進行深度的分析
- 安裝執行
- Python 3.4+ 和 pip3 / JDK 8 / git 1.9+
- 執行 pip3 install esrally
- 執行 esrally configure
- 執行
- 執行 esrally –distribution-version=7.1.0
- 執行 1000 條測試資料: esrally –distribution-version=7.1.0 –test-mode
- Tournament – 定義測試目標,由多個 race 組成
- Track – 賽道:測試資料和測試場景與策 略
- Car– 執行測試方案
- Award – 測試結果和報告
- Pipeline 指的是壓測的一個流程
- 預設的流程
- From-source-complete
- From-source-skip-build
- From-distribution
- 測試
- esrally race –distribution-version=6.0.0 –track=nyc_taxis –challenge=append-noconflicts –user-tag=”version:6.0.0”
- esrally race –distribution-version=7.1.0 –track=nyc_taxis –challenge=append-noconflicts –user-tag=”version:7.1.0”
- 比較結果
- esrally list races
- esrally compare –baseline=[6.0.0 race] –contender=[7.1.0 race]
- 測試
- esrally race –distribution-version=7.1.0 –track=nyc_taxis –challenge=append-noconflicts –user-tag=”enableSource:true” –include-tasks=”type:index”
- 修改:benchmarks/tracks/default/nyc_taxis/mappings.json,修改 _source.enabled 為 false
- esrally race –distribution-version=7.1.0 –track=nyc_taxis –challenge=append-noconflicts –user-tag=”enableSource:false” –include-tasks=”type:index
- 比較
- esrally compare –baseline=[enableAll race] –contender=[disableAll race]
- 測試
- esrally race –pipeline=benchmark-only –target-hosts=127.0.0.1:9200 –track=geonames -challenge=append-no-conflicts
本作品採用《CC 協議》,轉載必須註明作者和本文連結