0

私は、Apache Tomcat 6.x、Alfresco Labs 3(スタンドアロンの.warファイル)、およびいくつかのカスタムWebアプリを備えたCentOS5ボックスでWebサイトを実行している開発者です。

サーバーは過去数か月間問題なく稼働していますが、先日、誰かがAlfrescoを介して画像をアップロードしていて、サイトが応答しなくなりました。それに加えて、Tomcatを介して実行されているすべてのWebアプリも応答しませんでした。ローカル(つまり、telnet localhost 80)でtelnetを実行しようとしましたが、接続せずにタイムアウトしました。

最新のログファイル(localhost ... log)を見ると、java.lang.OutOfMemoryErrorで始まるスタックトレースが見つかりました。PermGenスペースに障害が発生し、グーグルで最大permサイズが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をクラッシュさせていないように見えるため、これが関連しているかどうかはわかりませんが、かなり頻繁にポップアップするようです。大したことではないと思うもう1つの理由は、過去1か月ほどログに表示されていることです。

それ以外は、どうしたらいいのかよくわかりません。私がチェックすることを知っている他の手がかりは本当にありません。これは屋外の問題だと思いますが、はっきりとは言えません。構成を変更するために今日行った唯一のことは、permgenサイズを512MBに増やすことでしたが、今回は実際にはPermGenエラーが発生しなかったため、これは役に立たない可能性があります。

何か案は?

4

3 に答える 3

1

最も簡単な解決策は、使用しているTomcatのバージョンに他のバージョンでこのエラーがあるかどうかを確認することです。Tomcatをアップグレード/元に戻す必要がある場合があります。

これを見つけました、それが役立つことを願っています

http://www.nabble.com/-jira--作成済み:-(WW-3106)-重大:-Servlet.service()-for-servlet-default-threw-exception-java.lang.IllegalStateException-(表示-a-BLANK-PAGE-to-user)-td23291783.html

于 2009-06-16T22:40:39.163 に答える
1

メモリ リークも探す必要があります。共有ライブラリからロードできるクラスを war からロードしていますか? また、特定のロギング クラスにより、Tomcat がロードされたクラス (permgen スペースを埋めるもの) を GC から保持する可能性があります。Tomcat クラス ローダーを調べて、アプリケーション レベルのクラス ローダーから必要以上にロードしていないことを確認します。

于 2009-06-19T01:23:01.977 に答える
1

ここで 256 MB から 512 MB まで安定化され、Tomcat permgen の不安定性が再発しました。RAM を 2 倍にすることで、アドホックな改善が保証され、修正から開発に至る可能性が非常に高くなります。それ以外の場合は、プロファイリングの時間を失い、理由を知り、とにかく後で RAM を 2 倍にします。

于 2009-06-16T23:28:00.957 に答える