在Tomcat中多次运行我的应用程序之后,我已经超出了PermGen内存(我怀疑我的石英servlet存在问题)并且Java抛出了OutOfMemoryError。通常情况下,我只是不时重启tomcat,但是因为这件事发生了我无法启动/重启。 Tomcat在我们的qa环境中运行,通常通过sbin文件夹启动/停止/重启。我试图使用替代catalina.sh运行启动tomcat,但它说端口正在使用!这让我怀疑tomcat已经在运行,但是当我试图阻止它时,我收到了这个错误:
严重:无法联系localhost:8005。 Tomcat可能没有运行。 2014年1月19日下午3:10:58 org.apache.catalina.startup.Catalina stopServer SEVERE:Catalina.stop:java.net.ConnectException: 连接在java.net.PlainSocketImpl.socketConnect(Native 方法)at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at 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 /最新/斌/ 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 start
出于某种原因,即使是root用户,也无法删除该进程。我用
sudo kill 5111
但是进程仍然列在之后,tomcat仍然不会重启...
答案 0 :(得分:0)
了解kill here
sudo kill -9 5111将完成这项工作。 Tomcat绑定到8005端口:直到您使用SIGKILL信号终止进程,它将不会释放该端口(并且您不允许在此端口上启动另一个tomcat)。