應用響應變慢的排查思路(筆記)
阿新 • • 發佈:2019-04-27
概述:資料庫效能(cpu)、伺服器cpu、記憶體、磁碟io、tcp連線數、頻寬分析
資料庫:一般應用變慢,問題在資料庫的可能性較大,這時候需要排查一下資料的cpu、IOPS、連線數、頻寬等是否異常(觸發瓶頸),個人感覺這裡一般多少問題出在cpu ,連線數的不夠用會報錯而不是變慢,iops和頻寬也可能,但目前遇到較少。這種情況可以考慮是不是存在慢sql,或者大量寫入等,如果不存在在考慮:快取->從庫->分表->分庫
如果資料庫一切指標正常,那就應該排除伺服器問題了,這個可以根據自己的經驗,有時間這個應該第一步排除,因為資料庫堵塞積壓會造成伺服器cpu過高、執行緒、tcp阻塞等
伺服器:先看cpu是否過高,一般cpu過高就是單個執行緒的處理效率變低造成了,可以從程式碼邏輯和資料庫上找原因,然後看記憶體是否正常,記憶體不夠大量gc回收也會造成卡頓,然後就是磁碟io了(個人感覺目前這個問題很少出現,因為一般都有單獨的檔案伺服器了),下一步就是看頻寬是否足夠,這個處理比較簡單加頻寬,或者佔頻寬的資源和業務分離,還是沒問題的話可以看一下 tcp連線數問題是否存在大量異常的連線
netstat -n|awk '/^tcp/{++S[$NF]}END{for (key in S) print key,S[key]}'