我们有一个通过RMI连接到另一个Java应用程序的Java App。 这个应用程序有多个实例同时运行,几天后实例就停止处理...... CPU处于0状态,我有一个额外的线程监听一个特定的端口,有助于关闭App。 / p>
我可以连接到特定端口,但应用程序没有做任何事情。
我们使用Log4j来保存日志并且没有写入任何内容,因此不会抛出任何异常。
我们还使用c3p0进行数据库连接。
有人有想法吗?
谢谢,
答案 0 :(得分:4)
我建议从受影响的应用程序的线程转储开始。 您需要逐个线程地查看正在进行的操作。可能是您有一个长时间运行的线程,或其他阻止其他工作完成的进程。
由于您运行的是linux,因此可以使用以下命令获取线程转储
kill -3 <pid>
如果您在阅读输出时需要帮助,请将其发布在原始问题中。
如果线程转储中没有显示任何内容,则可以查看其他替代方法。
答案 1 :(得分:0)
哼......我建议使用JMetter来强调应用程序并注意可能发生的任何奇怪的事情(例如内存泄漏,死锁等)。还要查看可能会中断程序(或System.exit()调用)的任何异常的代码。最后,如果其他人可以访问计算机,那么检查过程是否未以某种方式手动杀死是有意义的。