我正面临WAS线程被挂起的问题。
配置:
操作系统:AIX,
WAS:6.1.0.31
com.ibm.websphere.threadmonitor.interval:180秒
com.ibm.websphere.threadmonitor.threshold:10分钟
com.ibm.websphere.threadmonitor.false.alarm.threshold:100
以上设置用于挂起检测。
有什么方法可以清理悬挂的线程吗?
提前致谢。
答案 0 :(得分:0)
没有。 WAS没有为此提供机制。你看到的是一个仅提供通知的监视机制。您应该首先解决线程挂起的根本问题。开始讨论该问题
kill -3 <pid>
并读取堆栈跟踪。很可能在几次之后你会看到一个模式,然后你必须阅读你的应用程序的源代码,以了解真正出错的地方以及如何解决它。
答案 1 :(得分:0)
据我所知,Java不允许杀死挂起的线程。最好的办法是通过追捕原因来避免悬挂线程。就像在其他答案中已经提到的那样,尝试强制应用程序服务器创建线程转储(也称为Java Core)并分析其内容。在Linux / UNIX系统上
kill -3 <pid>
将完成这项工作。您可以在互联网上找到免费的图形工具来查看这些转储。我通常使用一个名为IBM Thread and Monitor Dump Analyzer for Java的人。 WebSphere Application Server日志文件将告诉您要查找的线程名称。
答案 2 :(得分:0)
你有工具可以解释。我没有在生产中使用它(从来没有这个要求,我们去干净重启)。你可以看看这个。它使用字节码检测。
http://www.ibm.com/developerworks/websphere/downloads/hungthread.html