繁体   English   中英

Java OutOfMemoryError之后,Tomcat无法启动

[英]After Java OutOfMemoryError, Tomcat Won't Start

在Tomcat中运行我的App多次之后,我已经最大化了PermGen内存(我怀疑是我的石英servlet出现了问题),Java抛出了OutOfMemoryError。 通常,我只是不时地重新启动tomcat,但是由于这种情况,我无法启动/重新启动。 Tomcat在我们的qa环境中运行,通常是通过sbin文件夹启动/停止/重新启动的。 我尝试使用替代方法catalina.sh run来启动tomcat,但它表示该端口已被使用! 这使我怀疑tomcat已经在运行,但是当我尝试停止它时,出现此错误:

严重:无法联系localhost:8005。 Tomcat可能未运行。 2014年1月19日3:10:58 PM org.apache.catalina.startup.Catalina stopServer严重:Catalina.stop:java.net.ConnectException:java.net的java.net.PlainSocketImpl.socketConnect(本机方法)拒绝连接java.net上的.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)在java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)在java.net。 SocksSocketImpl.java:392)位于java.net.Socket.connect(Socket.java:579)...

因此,如果未启动或停止,则Tomcat处于什么状态? 如何将其恢复为可启动状态?

更新根据鲍里斯(Boris)的评论,我使用ps auxfww列出了进程,而唯一使用tomcat的进程如下:

tomcat 5111 8.0 29.0 2052336 556512? Sl Jan17 221:48 / usr / java / latest / bin / java -Djava.util.logging.config.file = / var / lib / tomcat / conf / logging.properties -Djava.util.logging.manager = org.apache .juli.ClassLoaderLogManager -javaagent:/usr/share/tomcat/newrelic/newrelic.jar -Xmx512m -Djava.awt.headless = true -Djava.endorsed.dirs = / usr / share / tomcat / endorsed -classpath / usr / share /tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar -Dcatalina.base = / var / lib / tomcat -Dcatalina.home = / usr / share / tomcat -Djava.io。 tmpdir = / var / lib / tomcat / temp org.apache.catalina.startup.Bootstrap启动

由于某些原因,即使是root用户,也无法删除该进程。 我用

须藤杀5111

但是之后仍然列出该过程,并且tomcat仍然不会重新启动...

在此处了解有关杀死的信息

sudo kill -9 5111将完成这项工作。 Tomcat绑定到8005端口:直到您通过SIGKILL信号杀死该进程后,它才会释放该端口(并且不允许您在该端口上启动另一个tomcat)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM