性能測試調優一:
1.首先,看下選測交易的整個走向
純系統內部交易:
選測交易如果是系統內的交易,每一步請求都和系統交互幾次,訪問了幾個數據庫,訪問了數據庫的那幾張表??
該交易走了那幾臺機器,這幾臺機器的網絡連接情況是什么樣的??這幾臺機器是通過走的是哪些虛擬網卡,走了哪些路由器??帶寬是什么情況??
該交易在這幾臺機器上消耗了多少CPU,內存,及其對磁盤做了多少次的訪問??
從方法層面,從該交易的發起到結束,起了多少線程,調用了哪些相關的方法以及接口,訪問了哪些表???
跨系統交易:
該交易發起后,每一步請求在系統內走了幾次,調用了哪些接口,調用了幾次,訪問了哪些數據庫以及哪幾張表??
了解了以上內容后,才能準確的把握每個交易的壓力點在哪里
在性能瓶頸分析時,從不同的層次去分析問題可能出現在哪一個具體的位置
2.合理的利用各種監控工具
系統資源監控,通常通過nmon來監控分析
應用層的監控,通常通過開源的工具如jprofile? java自帶的jconsole visualvm以及商業化的軟件如dynatrace
數據庫層的監控,通常利用數據庫本身的DB Snapshot(DB2快照? DB2top? ? Oracle的AWR報告) 或者 Spotlight on? db2? ?oracle 等等
3.仔細檢查系統的各項參數配置,確保這些參數在最優狀態
應用線程池
應用的日志級別
數據庫連接池
操作系統級別的參數:文件句柄、TCP連接數等等
各個機器的資源大小是否合理:cpu、內存、磁盤空間、網絡情況等
某些特定應用自帶的一些參數設置(ESB? 大數據平臺等)
發壓端的機器配置(網路情況、CPU、內存等等)
發壓腳本的參數化以及參數化取值的方式是否合理,發壓腳本是否本身存在一些bug或者不合理的內容
4.根據遇到的具體問題發揮你聰明的大腦,逐層分析,驗證性能瓶頸的懷疑對象,逐個排除
直到找到最終的問題所在
幾種常見的問題分析:
?? 壓力上不去,不管怎么增加用戶,系統的壓力始終維持在一個點,且此時的資源消耗也很少,幾乎可以忽略不記
查看系統日志,看是否有相關報錯信息,如應用線程不足、數據庫連接不足的情況,如果存在,調整后驗證問題是否還存在
通常該情況是在某個資源的限制導致了壓力傳導不了后方,當然上述只是個人遇到的情況,也可能是其他原因造成的,需要根據實際
的情況去具體問題具體分析。
以下幾種在后續在分析:
隨著壓力的上升,響應時間變長
隨著壓力的上升,TPS出現波動
并發過程中,大量報錯,交易成功率過低
等等。-------未完待續
本人技術能力有限,還希望看到本文的大師多多指教,相互學習,共同提高
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2018年8月
?