为什么我的Tomcat / Alfresco网站每半天左右都没有响应?

时间:2009-06-16 21:55:54

标签: java tomcat alfresco

我是一名开发人员在CentOS 5上使用Apache Tomcat 6.x,Alfresco Labs 3(独立的.war文件)以及一些自定义Web应用程序运行网站的开发人员。

在过去的几个月里,服务器已经启动并运行没有问题,但就在前几天有人通过Alfresco上传了一个图像并且网站停止响应。除此之外,通过Tomcat运行的所有Web应用程序也没有响应。我尝试在本地进行远程登录(即telnet localhost 80),但它没有连接就超时了。

查看最新的日志文件(localhost ... log)我看到一个堆栈跟踪以 java.lang.OutOfMemoryError:PermGen space failure 开头,经过一些谷歌搜索增加了最大烫发大小128MB到384MB。我们认为这样可以解决问题,但今天又回来了,tomcat再次关闭(除了没有日志中的PermGen堆栈跟踪)

不断弹出的另一个堆栈跟踪如下:

Jun 16, 2009 3:38:26 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
    at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
    at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:707)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)

我无法判断这是否相关,因为它似乎并没有真正崩溃Tomcat,但它似乎经常弹出。我不认为这是一个大问题的另一个原因是过去一个月左右我们的日志中出现了这个原因。

除此之外,我不完全确定该怎么做。我知道没有其他任何线索可以检查。我猜这是一个Alfresco问题,但我不能肯定地说。我今天唯一改变配置的方法是将permgen大小增加到512MB,但这可能没有用,因为这次我们实际上没有得到PermGen错误。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

最简单的修复可能是检查您使用的tomcat版本是否在任何其他版本中出现此错误,您可能只需要升级/恢复tomcat。

发现这个,希望它有用

http://www.nabble.com/-jira--Created:-(WW-3106)-SEVERE:-Servlet.service()-for-servlet-default-threw-exception-java.lang.IllegalStateException-(Shows-a-BLANK-PAGE-to-user)-td23291783.html

答案 1 :(得分:1)

这里有256到512 MB稳定的重新固定tomcat permgen不稳定性。 RAM的两倍保证了临时改进,很可能从修复到开发。否则会浪费时间分析,知道原因,然后再加倍RAM。

答案 2 :(得分:1)

你也要寻找内存泄漏 - 你是否从战争中加载可以从共享库中加载的类?此外 - 某些日志记录类可能导致tomcat保持加载的类(这是填充permgen空间)的GC'd。查看tomcat类加载器,确保从应用程序级类加载器中加载的不是你需要的。