概述
在本地針對項目的登錄接口做了一次簡單的壓力測試。200並發持續120s,觀察吞吐量
運行結束之后,吞吐量是這樣的
如圖所示,吞吐量波動巨大,完全不正常。現在我們需要去觀察一下服務器了
mpstat -P ALL 1 先看一下cpu的運行情況*
可以發現cpu的利用率呈現一種階梯式遞增的趨勢,但是負載卻不高,說明cpu運行的問題不大
jstat -gcutil 1 1000觀察一下內存gc的情況
老年代內存空間不足了,所以導致新生代的對象進不來,頻繁fullgc,fullgc的時間又會很長,所以吞吐量一直上不去
檢查jvm的內存空間配置
堆區總共只有1g的內存,幾乎全部分給了新生代,導致老年代只有5M的可憐空間
修改內存配置
現在來修改一下內存參數,再加入一個並行回收的機制
再次運行腳本,觀察TPS和gc頻率
這次運行,fullgc的頻率變得很低了,而且吞吐量也比較平穩,沒有什么大的波動。但是運行到一分半鍾的時候,吞吐量出現了塌方式的下降,同時出現了異常。
觀察異常日志,發現超過了tomcat最大連接數了
**修改tomcat連接數配置,再次運行腳本
這次不像剛剛那要大面積報錯了,但是依然有一些異常出現。有一部分是超時,還有一部分是 Software caused connection abort: recv failed
調整一下請求的連接方式,使用java模式,並保持長連接,再觀察運行結果
這次一個報錯的都沒有了!