gpt4 book ai didi

java - Tomcat6问题和PermGen空间

转载 作者:太空宇宙 更新时间:2023-11-04 14:53:41 25 4
gpt4 key购买 nike

我在生产服务器中部署应用程序时正在尝试一些问题。

我有一台用于开发的 ubuntu 机器,我的 servlet 在其中运行良好。一个月左右没有问题。

然后我将其部署到我的生产计算机(VM debian)。我停止了tomcat,我将war文件复制到webapps文件夹并再次启动tomcat。

首先,当我尝试停止/启动/重新启动 tomcat 时,我收到此“错误”:

root@VMMachine-34199:~/folder# sudo /etc/init.d/tomcat6  restart
[ ok ] Stopping Tomcat servlet engine: tomcat6 Tomcat servlet engine is not running but pid file exists, cleaning up.
[ ok ] Starting Tomcat servlet engine: tomcat6.
root@VMMachine-34199:~/folder# sudo /etc/init.d/tomcat6 status
[ ok ] Tomcat servlet engine is running with pid 22627.
root@VMMachine-34199:~/folder# sudo /etc/init.d/tomcat6 status
[ ok ] Tomcat servlet engine is not running, but pid file exists..

我不知道该怎么做才能避免这种情况。总是发生在生产机器中。

之后,我又遇到了这个问题,不知道是否与第一个相关。

在 catalina.out 我得到:

java.net.BindException: Address already in use <null>:9010 

9010是tomcat端口。该端口仅用于通过我拥有的其他服务连接到我部署的 war 之一。使用 netstat -atnp |grep 9010 我只看到其他服务正在监听。

但是在此之后,tomcat 似乎启动了,注册了我的 servlet 中可用的资源等等。

最后,我在 catalina.out 中得到了这个:

May 05, 2014 8:34:29 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat6/webapps/SERVLET/WEB-INF/lib/servlet-api-2.3.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
May 05, 2014 8:34:47 AM org.apache.tomcat.util.digester.Digester endElement
SEVERE: End event threw error
java.lang.OutOfMemoryError: PermGen space

May 05, 2014 8:34:47 AM org.apache.tomcat.util.modeler.Registry registerComponent
SEVERE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/SERVLET,J2EEApplication=none,J2EEServer=none
May 05, 2014 8:34:47 AM org.apache.catalina.startup.HostConfig deployDirectory
SEVERE: Error deploying web application directory SERVLET
java.lang.OutOfMemoryError: PermGen space

正如我已经说过的,在开发机器中,tomcat 工作正常并且从未给我这些错误,所以我不知道如何处理它们。

我正在使用这个库 Log4j 。我在这里读到:http://javarevisited.blogspot.com.es/2012/01/tomcat-javalangoutofmemoryerror-permgen.html可能会导致 Permgem 错误。不知道这是否可以帮助您解决我的问题

现在我在启动时得到了这个,然后它停止了:

2014 年 5 月 5 日上午 8:42:17 org.apache.coyote.http11.Http11Protocol 暂停信息:在 http-9010 上暂停 Coyote HTTP/1.12014 年 5 月 5 日上午 8:42:18 org.apache.catalina.core.StandardService 停止信息:停止服务 Catalina2014 年 5 月 5 日上午 8:42:18 org.apache.catalina.loader.WebappClassLoaderclearReferencesThreads严重:Web 应用程序 [/SERVLET] 似乎已启动名为 [Timer-0] 的线程,但无法停止它。这很可能造成内存泄漏。2014 年 5 月 5 日上午 8:42:18 org.apache.coyote.http11.Http11Protocol 销毁信息:在 http-9010 上停止 Coyote HTTP/1.1

最佳答案

尝试增加生产服务器上虚拟机的 PermGen 大小(它是 JVM 保留类和其他一些保证不会更改且很少需要垃圾收集的常量中的内存区域)。

参见Increase PermGen Space问题。

关于java - Tomcat6问题和PermGen空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23468219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com