Tomcat 7 崩溃后无法启动

Posted

技术标签:

【中文标题】Tomcat 7 崩溃后无法启动【英文标题】:Tomcat 7 doesn't start after it crashed 【发布时间】:2012-08-20 17:43:59 【问题描述】:

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

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

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

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

++++++++++

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

【问题讨论】:

严重:无法初始化与 ProtocolHandler ["ajp-bio-9008"] 关联的端点 java.net.BindException:地址已在使用中 :9008 2012 年 8 月 25 日 11:15:26 org.apache.catalina.core.StandardService initInternal 严重:无法初始化连接器 [连接器 [AJP/1.3-9008]] org.apache.catalina。 LifecycleException: 无法初始化组件 [Connector[AJP/1.3-9008]] 同时发现是 PermGen 空间内存不足,有人建议使用 VM-arguments 来解决问题,但都没有真正消除定期重启 Tomcat 的需要 【参考方案1】:

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

catalina.sh stop -force

有关如何防止内存不足错误的讨论,请参阅 Dealing with "java.lang.OutOfMemoryError: PermGen space" error

尽管最终您可能需要投入更多硬件来解决问题。

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

【讨论】:

以上是关于Tomcat 7 崩溃后无法启动的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 7 无法启动

启动Tomcat后无法进入8080或无法启动tomcat

Windows下调整服务版Tomcat启动参数

Window无法启动本地计算机上的tomcat 7

Linux下tomcat无法启动/启动后无法用过127.0.0.1:8080访问解决方案

数据库崩溃后无法重新启动 mariadb 列存储