4

我有一台服务器在退出时偶尔会挂起。挂起只发生大约 1/10 或更少的时间,到目前为止,我们无法找到可靠地重现问题的方法。我浏览了我的代码并认为我正在关闭所有资源并杀死我的线程,但显然有些时候我没有正确关闭。

当我无法可靠地重新创建它时,任何人都可以建议调试技巧来帮助我测试它吗?我已经尝试在 JVisualVM 出现故障时运行它,但是除了向我显示 sigterm 线程仍在运行并且一切都在 0% CPU 上,我认为这意味着某处出现死锁之外,它并没有多大帮助。

4

2 回答 2

2

当进程挂起时,您可以向进程发送 SIGQUIT (kill -3),它将生成线程转储。输出到 stderr,所以确保它被捕获。

于 2013-09-26T02:52:00.133 回答
2

您可以尝试使用JConsole来监控您的服务器。您可以直观地监控内存、CPU 使用率和线程数等。它还可以检测死锁是否存在。

于 2013-09-25T22:14:10.647 回答