Mysql Tomcat只冻结一个应用程序

Mysql Tomcat只冻结一个应用程序,mysql,tomcat,lamp,Mysql,Tomcat,Lamp,我有一个运行Tomcat6的Ubuntu LAMJ服务器 我的一个JSP应用程序每隔几天就会冻结一次,我很难找出原因。我必须重新启动tomcat才能让这个应用程序再次运行,因为它不会自行恢复。我在我自己的log4j日志中没有看到该应用程序的任何内容,在Catalina.out中也看不到任何内容 此应用程序通过server.xml文件中的上下文元素与另一个应用程序共享javax.sql.DataSource资源。我不认为这是问题的原因,但我不妨提一提 有人能给我指出正确的方向来找出这个间歇性问题的

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

我的一个JSP应用程序每隔几天就会冻结一次,我很难找出原因。我必须重新启动tomcat才能让这个应用程序再次运行,因为它不会自行恢复。我在我自己的log4j日志中没有看到该应用程序的任何内容,在Catalina.out中也看不到任何内容

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

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

提前感谢,


Christy

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

使用VisualVM

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

从命令行手动执行

打开一个命令行,找到tomcat的进程id

ps -ef | grep java
一旦您为正在运行的tomcat实例标识了进程ID

kill -3 <pid>
kill-3
在此处替换进程Id。这会将您的线程转储发送到tomcat的标准输出。很可能是catalina.out文件

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


将3个线程转储相隔10秒并进行比较是正常的。信息技术 使查看哪些线程被“卡住”和哪些线程变得更加容易 正在移动



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

您可以进行线程转储吗?还是整个过程都冻结了?嗨,肖恩。这只是一个冻结的应用程序。此应用程序冻结时,所有其他应用程序都会运行该文件。我如何从这个过程中获得线程转储?谢谢Sean,这肯定是朝着正确方向迈出的一步。如何找到一个应用程序的线程id?我目前必须重新启动整个Tomcat才能重新启动,因为我不知道如何只重新启动一个应用程序。如果它们都在同一个Tomcat服务器上运行,它们共享相同的进程idIt将3个线程转储相隔10秒并对其进行比较是正常的。这样可以更容易地看到哪些线程被“卡住”了,哪些线程正在移动。@Christy请看马克最近的评论。这很重要,我忘了早点提了。谢谢你们@Mark和Sean,你们都帮了大忙。我的Tomcat6进程似乎是13868,所以我将在它冻结时运行“kill-313868”,3次,间隔10秒。然后重新启动Tomcat。现在,我处于一个奇怪的位置,等待它冻结!谢谢