性能測試中TPS上不去的幾種原因
性能測試中TPS上不去的幾種原因_tps一直上不去-CSDN博客
-
網絡帶寬
-
連接池
-
垃圾回收機制
-
壓測腳本
-
通信連接機制
-
數據庫配置
-
硬件資源
-
壓測機
-
業務邏輯
-
系統架構
CPU過高什么原因
性能問題分析-CPU偏高 - 西瓜汁拌面 - 博客園
- US CPU過高: 應用程序本身比較繁忙
現象:壓測過程中,使用top命令查看系統資源占用情況,us cpu過高,超過50%以上。
原因:UseCPU偏高說明應用程序本身比較繁忙
排查手段:
(1)使用top命令是哪個進程消耗CPU高
(2)再找到CPU消耗高的線程:top -H -p 進程號
(3)把線程號轉換成16進制:printf "%x\n" 線程號
(4)再用jstack命令分析這個線程是在干什么:jstack 進程號 | grep 16進制的線程號
(5)通過JProfiler的CPU Views視圖的層層分析,可以清楚的找到造成CPU高的原因
- Sys CPU過高
現象:壓測過程中,使用top命令查看系統資源占用情況,sy cpu過高,超過50%以上。
原因:內核調用,IO導致的,看IO是否使用頻繁
排查手段:
(1)首先查看磁盤繁忙程度、磁盤的隊列(nmon、sar),查看diskbusy,若diskbusy超過30%以上就可以稱作IO繁忙;
? ? ? (2)IO繁忙的話,查看磁盤中IO的排序隊列(iostat),看具體是read還是write繁忙,詢問開發人員為什么讀/寫這么高,找出原因;
? ? ? ? ? ? ? 讀高:大量讀取數據造成內存不夠引起;
? ? ? ? ? ? ? 寫高:需要減少寫的頻率;
(3)如果IO不繁忙,也就是磁盤沒有問題,則使用strace查看系統內核調用情況,具體內核調用什么比較頻繁;
內存溢出和內存泄露
內存泄漏和、內存溢出 (史上最全)_內存溢出和內存泄漏-CSDN博客
- 內存溢出:表示請求的內存大小超過系統最大的內存。如果操作超過系統內存大小的元素時,會拋出異常
- 內存泄漏:表示不再使用的元素沒有被回收,而是被永久保留下來。會占用內存空間,大量的垃圾數據沒有被回收時,會影響系統性能,浪費系統內存。
線程阻塞和線程死鎖
死鎖與線程阻塞解析-CSDN博客
-
線程阻塞問題排查流程
a. 做線程dump
b. 在dump文件中搜索關鍵字"BLOCK”、”TIME_WAITING",查看每種狀態的count數量
c. 按照上述關鍵字搜索,查看跟本系統有關的業務代碼堆棧信息 -
出現死鎖之后,我們關閉壓力機并不能解決問題,這個和內存溢出是一樣的,我們需要重啟tomcat。
死鎖的解決思路
1、避免嵌套加鎖
2、減少顆粒度
3、增加超時處理