-
一、问题
Tomcat不停重启,数据库连接池动都不动就满了;
死链接超多。
-
二、监控现象
内存使用、GC情况正常;
数据库连接池用完,总体方法调用次数减少,且耗时大大增加,如下图:
-
三、分析定位原因
内存使用、GC情况正常:
说明Tomcat运行问题不大。
数据库连接池用完,总体方法调用次数减少,且耗时大大增加:
首先可以从方法调用分析,查看哪些方法调用次数比较多,且耗时大。
另外,从日志服务也可以看到项目上传的相关接口调用情况,如下:
根据监控显示,最终于确定为如下接口调用量大增,遭到攻击:
xx/xxx/VerifyMobile2
-
四、解决方法
接口攻击来自微信端,主要是没有相关验证措施,建议增加图形验证。
另外,我们的程序也不够健壮,可以增加限流措施,不至于被外部未知调用拖垮。
-
五、总结
先搞清楚问题,再详尽查看监控现象,大概确定分析方向再去分析,不然这种情况去分析dump或TCP死连接并不是最合适的。