改造開源工具——流量回放工具goreplay支持壓測統計


git

目前輸入法服務端的例行性能測試主要使用開源的流量回放工具goreplay,這個工具自己是作流量回放使用的,也能夠在回放流量的時候縮小或者放大倍數,以達到性能測試的目的,可是畢竟不是專業作性能測試的工具,就像這句名言說的「不是他的活他要幹」,因此對於結果統計,goreplay不是很擅長,爲了讓他支持客戶端統計,須要對他作個升級;github

goreplay自帶的統計

說他不支持結果統計,其實有些冤枉他,goreplay自帶命令行也是支持結果統計的,參數是:--stats --output-http-stats加了這個命令行以後,控制檯輸出是這樣的:centos


其中倒數第二列等同於當前的QPS,可是這就是僅有的統計項了,並無區分返回碼、響應時間、TP90、TP99等指標;微信

prometheus(公衆號回覆prometheus可查看往期prometheus的介紹文章)

官網解釋:開源的監控解決方案ide

metrics

prometheus的監控數據源,詳細解釋可參考https://www.investopedia.com/terms/m/metrics.asp函數

改造目標

讓goreplay支持實時metrics統計,在goreplay執行流量回放與性能測試時,實時統計出做爲壓測客戶端的goreplay當前的QPS和響應時間等各項指標;工具

實施過程

  1. 分析源碼,找到源碼中發出請求的函數;oop

  2. 爲了獲取請求狀態碼及對應QPS,在獲取請求返回值的位置插入counter metric;性能

  3. 爲了獲取不一樣請求響應時間等指標,須要在發出請求前記錄starttime,請求返回後記錄endtime,記錄時間消耗的histogram metric;測試

  4. 在goreplay啓動後註冊metrics接口及服務監聽端口;

  5. prometheus服務中註冊goreplay客戶端的metrics服務;

  6. grafana系統中創建dashboard,統計須要的數據指標;

效果

  1. 源碼中http_client.go中加入metrics相關代碼(源碼地址見文末)

  2. main.go進行metrics註冊;

  3. prometheus配置文件中註冊goreplay_client metrics

  4. 啓動goreplay的時候須要加命令行-output-http-compatibility-mode true以啓動結果統計;

  5. 啓動goreplay時,查看監聽端口,發現有註冊的28081

  6. 接口訪問http://10.1xx.xx.xx:28081/metrics

  7. grafana中新建dashboard查詢須要的性能測試指標:

至此對goreplay的改造工做就作完了,經過metrics實現了從客戶端統計壓測過程當中的各項指標;

源碼地址,因爲提交分支須要goreplay做者審覈,因此github上新建了一個工程,你們能夠下載使用https://github.com/lidedede/gor

其中gor_ldd是centos7編譯的二進制,能夠直接使用;附完整命令行:./gor_ldd --input-file "xxx.gor|1500%" --output-http http://10.1xx.xx.xx:1xxx --stats --output-http-stats --input-file-loop -output-http-workers 10000 -output-http-workers-min 5000 -output-http-compatibility-mode true

本文分享自微信公衆號 - 搜狗測試(SogouQA)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索