壓測流程和總結
一,總結
1、第一次做壓測,一定要先看別人的壓測報告(可以知道壓測有哪些指標,有哪些壓測方案,以及明確壓測的目標,還可以彌補監控和壓測指標配置缺漏等問題)
2、第一次做壓測,一定要全方位做好安全評估(最好做到請教或請求各個組件負責人評估和配合壓測,尤其是線上壓測,系統所依賴的數據庫、緩存、其他組件,以及依賴的其他線上接口、資源等壓垮會有什麼影響,有木有補救、降級措施,混入髒數據是否能清理乾淨等等)。規範和安全評估: 服務端性能測試安全操作規範
3、正確的評估,默認的壓測資源是否滿足需求
4、默認資源最大併發用戶數爲2,併發數是100,QPS大約在800左右,只需要調整併發用戶數和單臺主機默認用戶數,以及壓測時長即可
5、併發用戶數!=QPS,具體併發用戶數,可查看下錶併發數
6、17:30~19:00是網絡不穩定期(18:30左右效果最明顯),這時候做網絡不穩定壓測,非常理想
7、約定,簡單壓測120s即可,但是正規壓測請調到600s或以上
8、壓測腳本可以集成到Jenkins裏,所以核心業務完全可以每次Jenkins構建都做一次簡單壓測
9、使用域名在連續請求量在20W~30W以後會出現輕微的失敗,大約佔0.01%~0.08%,所以壓測,請直接使用ip+端口號
10、壓測方式推薦,由小到大逐步壓測,如:
壓測接口 |
並發數 |
執行時間 |
QPS |
平均響應時間 |
t op50響應時間 |
top90響應時間 |
top99響應時間 |
成功率 |
xxController.getXX |
10 |
600s |
2284 |
4ms |
4ms |
5ms |
7ms |
100% |
xxController.getXX |
15 |
600s |
2883 |
5ms |
4ms |
7ms |
12ms |
100% |
xxController.getXX |
20 |
600s |
3292 |
6ms |
5ms |
8ms |
17ms |
100% |
xxController.getXX |
25 |
600s |
3500 |
7ms |
6ms |
10ms |
20ms |
100% |
xxController.getXX |
30 |
600s |
3519 |
8ms |
7ms |
11ms |
23ms |
100% |
xxController.getXX |
35 |
600s |
3616 |
9ms |
8ms |
13ms |
27ms |
100% |
xxController.getXX |
40 |
600s |
3594 |
11ms |
10ms |
15ms |
34ms |
100% |
xxController.getXX |
45 |
600s |
3644 |
12ms |
11ms |
17ms |
36ms |
100% |
xxController.getXX |
50 |
600s |
3655 |
13ms |
12ms |
19ms |
37ms |
100% |
二,壓測前置步驟(無需申請資源)
1、評估壓測的目標、範圍和作用(不清楚可先查看別人的測試報告)
2、安全評估(線上壓測,尤其是需要申請資源,切勿只看wiki或摸索操作)。規範和安全評估: 服務端性能測試安全操作規範
3、提前配置好壓測的事務,場景,測試數據(最好將預期結果也配置好)
4、默認分配的的壓測資源是否已經滿足壓測(默認資源最大併發用戶數爲2,併發數是100,QPS大約在800左右)
5、開始壓測(壓測完畢最好形成壓測報告的wiki)
三,壓測後置步驟(需申請資源)
1、若默認分配的的壓測資源不滿足壓測需求可先聯繫QA,商榷資源需求、安全評估、以及壓測時間段,並形成wiki和發送資源申請郵件
2、提前準備好壓測報告的wiki,方便壓測完畢即可發送壓測郵件(也能明確壓測內容)
3、創建羣,把發送郵件的相關人員拉入羣,等待壓測負責人分配資源
4、分配完畢後即可在默認資源配置下修改配置來開工壓測
5、壓測完畢後,形成壓測報告wiki和郵件(儘量當天完成壓測和壓測報告)