标签归档:jstack

Tomcat无响应案例分析

问题描述

生产环境下有几台tomcat,但突然某个时候发现所有的请求都不能响应了,由于我们的web server使用的是nginx,会将请求反向到tomcat上,所以起初怀疑是nginx就没有收到请求,但查看日志后发现,nginx中大量出现499的返回,这说明问题还是出在tomcat上.

问题排查

  1. 首先我想到的是不是CPU跑满了,虽说CPU没有报警但还是本能的top命令看下系统负载,发现系统只有0.x的负载,cpu,内存消耗都是正常的.
  2. 由于CPU没有出现异常,所以应该不是GC出现了问题,但还是检查了下GC log,果然GC也没问题
  3. 此时必须让jstack上场了,果然在使用jstack后发现很多线程都是WAITING状态
  4. 阅读全文…

解决java调试工具无法连接jvm

今日对线上tomcat做jstack时发现如下异常

后来尝试不同的jdk版本发现tomcat在1.6.24版本以下的jmap,jstack都无法操作,而在1.6.18版本可以执行jmap,jstack.

原因分析

jvm运行时会生成一个目录hsperfdata_$USER($USER是启动java进程的用户),在linux中默认是/tmp,目录下会有些pid文件,存放jvm进程信息,而jmap,jstack等工具会读取/tmp/hsperfdata_$USER下的pid文件获取连接信息.
知道这个原因后,我马上检查了/tmp/hsperfdata_root目录,果然没有pid对应的文件,但在$TOMCAT_HOME目录中的temp目录中有对应的文件.
阅读全文…