tomcat假死排查-数据连接池耗尽

问题背景:测试环境最近隔几周就会出现请求服务没有响应,查看服务进程正产,查看后台日志没有任何报错的日志,查看tomcat下的localhost_access_log.log日志中也没有请求记录。

排查步骤:

(1)查看tomcat的jvm的gc日志,分析后正常。(tomcat如何开启gc日志以及如何分析日志,可参考文章:https://www.jianshu.com/p/d1f5916d5548

(2)查看jvm内存使用情况,如下,发现没有内存泄漏(服务器为linux系统):

(3)查看tcp连接情况,如下,发现大量CLOSE_WAIT(查看命令:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'):

(4)收集jvm堆栈信息,收集命令如下:

查看head.log 发现大量线程等待,都是等待获取数据库连接,at org.apache.tomcat.dbcp.pool2.impl.LinkedBlockingDeque.takeFirst

经分析原因为数据库连接池耗尽 ,解决方法:修改数据源配置,增大数据库初始连接以及最大连接数

猜你喜欢

转载自blog.csdn.net/chang_yushun/article/details/88929625
今日推荐