JavaWeb服务器突然停止响应,没有任何异常

JavaWeb服务器突然停止响应,没有任何异常,java,jsp,servlets,web-applications,webserver,Java,Jsp,Servlets,Web Applications,Webserver,我有一个使用jsp在java web服务器上构建的浏览器游戏 我添加了一个新模块,它使用一些http会话对象并将数据保存在其中。然而,在运行3-4小时后,它突然停止工作并冻结。当我检查错误日志时,我没有看到抛出任何异常 服务器马上就有50-60台在线 我使用visualVM监控服务器,以下是4小时后的结果,直到服务器停止: 我将最大内存设置为1024Mb。正如你所看到的,它的问题不是关于内存 我注意到的是,当服务器停止时,线程数量增加 根据屏幕截图,我是否应该怀疑httpsession对象?为

我有一个使用jsp在java web服务器上构建的浏览器游戏

我添加了一个新模块,它使用一些http会话对象并将数据保存在其中。然而,在运行3-4小时后,它突然停止工作并冻结。当我检查错误日志时,我没有看到抛出任何异常

服务器马上就有50-60台在线

我使用visualVM监控服务器,以下是4小时后的结果,直到服务器停止:

我将最大内存设置为1024Mb。正如你所看到的,它的问题不是关于内存

我注意到的是,当服务器停止时,线程数量增加


根据屏幕截图,我是否应该怀疑httpsession对象?为什么服务器停止响应???

看起来像是系统限制或死锁

您的线程图看起来有问题:活动线程的数量很重要,而且从不减少。web应用程序应该是无状态的。当请求到达时,活动踏板计数应上升,但当请求完成时,活动踏板计数也应下降。
我觉得你的申请不是这样的。

姆戈根是对的

您还应该检查jconsole中的“死锁检测”

如果您使用JDK 6+版本,则可以使用。它有一个
findDeadlockedThreads()
方法和其他有趣的方法来满足您的需要


无论如何,如果不是死锁,为了获得有关问题原因的更多信息,我建议您查看系统日志,无论您的操作系统是什么。您可能会有一些有趣的事情。

检查jconsole上的“死锁检测”。当它停止响应时?感谢您提供详细的答案。但我无法得到“死锁检测”部分。我应该在系统运行时检查它,还是应该在问题发生时正确使用它?因为当我在正常运行时尝试它时,它会显示“未检测到死锁”。不客气。有趣的主题:)您在jconsole(在Threads选项卡中)中有按钮,而不是在jvisualvm中。它们在jdk的同一个
bin
目录中是两个不同的可执行文件。哦,我想我无法解释:)我已经在使用JConsole和线程选项卡中的“检测死锁”按钮:)我的问题是什么时候应该应用它?当我的站点停止响应或任何时候它启动时?对不起,我很困惑。我删除了我以前的评论。我认为当服务器冻结时,服务器的进程被终止。我读得不好。我将进入睡眠状态,我想:)因此,如果进程一直在运行,那么当服务器似乎停止时,必须使用“检测死锁”选项。如果由于死锁而停止,则应该检测到一些死锁。