0

我的问题是,我在 2GB 2Core VPS 上的 Tomcat7 上运行 webapp,当应用程序因 heapoverflow 异常而崩溃时,Tomcat 不会启动或停止。当我尝试通过浏览器访问它时,它只是挂起。

如果我尝试停止,它看起来会停止,但如果我反复这样做,它应该抛出异常,因为它已经停止了,但事实并非如此。只有在 15 分钟后,我才能再次启动它。

我知道我应该解决 heapoverflow 问题,但问题是我根本无法解决问题,因为我使用的框架是 nod 线程安全的,我必须为每个请求创建一个内存重对象的新实例:(我试图通过添加一些基本控制器来解决这个问题,它只允许创建一定数量的对象,其余的请求被重定向到一个抱歉页面。因为它是针对 UNI 项目的,主要目标不是能够为数百个用户提供服务,使框架线程安全并不重要。

我仍然需要知道为什么Tomcat在崩溃后会这样做。如果您能更好地了解如何限制同时在内存中的这些对象的数量,这也会有所帮助。

++++++++++

目前我能看到的唯一解决方案是增加 2GB 的 RAM,这样我就可以一次为 15-20 个用户提供服务。

4

1 回答 1

0

通常在tomcat因内存不足错误而崩溃后,它处于不可用状态,必须手动或使用终止该进程

catalina.sh stop -force

有关如何防止内存不足错误的讨论,请参阅 处理“java.lang.OutOfMemoryError: PermGen space”错误

尽管最终您可能需要在问题上投入更多的硬件。

这也可能派上用场: Can I auto restart tomcat jvm on out of memory exception

于 2013-07-29T16:00:29.670 回答