-
一、問題
Tomcat不停重啓,數據庫連接池動都不動就滿了;
死鏈接超多。
-
二、監控現象
內存使用、GC情況正常;
數據庫連接池用完,總體方法調用次數減少,且耗時大大增加,如下圖:
-
三、分析定位原因
內存使用、GC情況正常:
說明Tomcat運行問題不大。
數據庫連接池用完,總體方法調用次數減少,且耗時大大增加:
首先可以從方法調用分析,查看哪些方法調用次數比較多,且耗時大。
另外,從日誌服務也可以看到項目上傳的相關接口調用情況,如下:
根據監控顯示,最終於確定爲如下接口調用量大增,遭到攻擊:
xx/xxx/VerifyMobile2
-
四、解決方法
接口攻擊來自微信端,主要是沒有相關驗證措施,建議增加圖形驗證。
另外,我們的程序也不夠健壯,可以增加限流措施,不至於被外部未知調用拖垮。
-
五、總結
先搞清楚問題,再詳盡查看監控現象,大概確定分析方向再去分析,不然這種情況去分析dump或TCP死連接並不是最合適的。