Tomcat只冻结一个应用程序

时间:2012-04-11 11:58:58

标签: mysql tomcat lamp

我有一台运行Tomcat6的Ubuntu LAMJ服务器。

我的一个JSP应用程序每隔几天冻结一次,我无法弄清楚原因。我必须重新启动tomcat以重新启动那个应用程序,因为它不会自行回转。我在该应用程序的log4j日志中没有得到任何内容,也无法在Catalina.out中看到任何内容。

此应用程序通过server.xml文件中的context元素与另一个共享javax.sql.DataSource资源。我不认为这是问题的原因,但我不妨提一下。

有人能指出我正确的方向找到这个间歇性问题的原因吗?

提前感谢,

克里斯蒂

1 个答案:

答案 0 :(得分:0)

获取正在运行的服务器的线程转储 有两个选项

使用VisualVM

在%java_home%/ bin文件夹中会有一个名为jvisualvm的文件。运行此命令并连接到您的tomcat服务器。单击“线程”选项卡,然后单击“线程转储”

从命令行手动

打开命令行并找到tomcat的进程ID

ps -ef | grep java

确定正在运行的tomcat实例的进程ID后,

kill -3 <pid>

在此处替换进程ID。这会将您的线程转储发送到tomcat的stdout。很可能是catalina.out文件。

编辑 - 根据Mark的评论如下:

  

将3个线程转储相隔约10秒并进行比较是正常的。它   使得更容易看到哪些线程被“卡住”以及哪些线程被“卡住”   正在移动


一旦你有线程转储,你可以分析它是否卡住线程。它可能不会成为线程问题,但至少你可以看到服务器内部发生了什么,以进一步分析问题。