筆記六十二:叢集壓力測試

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 組成
    • Esrally list races
  • Track – 賽道:測試資料和測試場景與策 略
  • Car– 執行測試方案
    • 不同配置的 es 例項
  • Award – 測試結果和報告

叢集壓力測試

叢集壓力測試

  • Pipeline 指的是壓測的一個流程
    • Esrally list pipelines
  • 預設的流程
    • 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 協議》,轉載必須註明作者和本文連結

快樂就是解決一個又一個的問題!

相關文章