性能分析思路
1.檢查是否是網絡原因:
1)確認壓測機和服務器是否在同一內網環境,沒有走internet網絡
2)檢查壓測機的服務器的網卡是否有帶寬瓶頸,理論上不能超過最大帶寬的70%
2.確認jmeter壓測機是否存在壓力不夠,監控壓測機的硬件資源,看占用是否偏高。可以通過以下方式提高壓測機壓力:
1)設置jmeter的jvm堆大小提高jmeter對壓測機硬件資源利用率(一般為壓測機內存的一半)。
2)部署jmeter壓測機集群
3.分析是否是應用服務器問題
4.應用服務器硬件問題:
1)查看服務器CPU使用率是否偏高(>70%),CPU load負載是否大於CPU核數。
2)查看內存使用率是否偏高(>80%),註意服務器是否有把內存設置了swap緩存,如設置緩存使用率不超過70%。
3)查看磁盤使用率和磁盤IO是否異常偏高
5.應用服務器軟件問題,主要有以下三個方面:
1)數據庫和緩存問題
2)中間件(Tomcat)
3)業務邏輯和代碼邏輯(第9步再分析)
6.數據庫和緩存問題:
1)確認服務器是否開啟了redis緩存或者本地緩存,根據經驗redis緩存和本地可大幅提高TPS和降低響應時間(ps:本地緩存需根據具體業務評估是否可以開啟,不具有普適性)
2)監控數據庫連接數,看是否達到設定的最大值,可適當提高最大數據庫連接數。
3)監控數據庫,看是否存在慢的SQL語句,找出慢SQL的原因,進行優化。
4)監控全表掃描率,通過修改SQL語句盡量減少全表查詢。
5)緩存命中率,檢查系統是否啟用查詢緩存。此處可尋求DBA幫助,提高緩存命中率。
7.中間件(Tomcat),這主要監控服務器的TCP連接數和連接狀態,看是否存在以下問題:
1)存在大量TIME_WAIT狀態的連接,如果業務需要保持連接,則可通過開啟服務器長連接優化此問題。
2)存在CLOSE_WAIT狀態的連接,一般為代碼問題,沒有及時釋放連接,需要具體分析。
3)連接數偏低,需要適當提高Tomcat線程池,和最大連接數,進行回歸壓測,尋找合適的配置。
8.如果以上指標都正常,監控查看Nginx各項指標,確認是否存在以下問題:
1)入口和出口流量是否達到帶寬瓶頸
2)tcp連接數是否到了瓶頸,是否存在大量的TIME_WAIT狀態的連接
3)響應時間是否偏高
4)負載均衡調度是否有問題
9.如果以上指標都正常的話,需要進一步分析業務邏輯和代碼(eg:可以盡量減少不必要的日誌打印)
報錯問題分析
5XX錯誤:jmeter報告有5XX錯誤,需要開發或者運維查看Tomcat、Nginx日誌,分析具體原因。
Non HTTP response code: java.net.ConnectException:一般是連接超時(查日誌), 從幾個方面排查,腳本問題、網絡、服務器承受能力到了極限(監控系統資源),並發量超過系統處理能力會出現這種情況。
性能分析思路