簡體   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