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

排查步骤:

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

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

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

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

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

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

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

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

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

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

相关文章:

  • 2021-09-14
  • 2021-09-18
  • 2022-12-23
  • 2022-01-08
  • 2022-12-23
  • 2022-01-08
猜你喜欢
  • 2022-12-23
  • 2021-06-11
  • 2022-12-23
  • 2021-09-08
  • 2022-12-23
  • 2021-09-16
  • 2022-01-08
相关资源
相似解决方案