2009-06-16 5 views
0

Ich bin ein Entwickler, der eine Website auf einer CentOS 5-Box mit Apache Tomcat 6.x, Alfresco Labs 3 (die Standalone-WAR-Datei) und ein paar benutzerdefinierten Webapps läuft.Warum reagiert meine Tomcat/Alfresco-Site nicht jeden halben Tag oder so?

Der Server ist in den letzten Monaten ohne Probleme in Betrieb gewesen, aber gerade erst hat jemand ein Bild über Alfresco hochgeladen und die Seite reagiert nicht mehr. Darüber hinaus reagierten alle Webapps, die über Tomcat laufen, nicht mehr. Ich versuchte Telnet lokal (d. H. Telnet Localhost 80), aber es Timeout ohne Verbindung.

in der letzten Protokolldatei suchen (localhost ... log) sah ich einen Stack-Trace mit java.lang.OutOfMemoryError Start: space Ausfall PermGen und nach einigen googeln die max zul Größe von 128 MB bis 384 MB erhöht. Wir dachten, dass dies das Problem zu beheben, aber heute hat es wieder und Kater ist wieder nach unten (außer ohne den PermGen Stack-Trace in den Protokollen)

Der andere Stack-Trace, das ist die folgende Aufspringen hält:

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) 

Ich kann nicht sagen, ob das verwandt ist, da Tomcat anscheinend nicht wirklich abstürzt, aber es erscheint ziemlich oft. Ein anderer Grund, warum ich es nicht für eine große Sache halte, ist, dass es in unseren Logs für den letzten Monat oder so auftaucht.

Ansonsten bin ich nicht ganz sicher, was zu tun ist. Es gibt nicht wirklich irgendwelche anderen Hinweise, die ich überprüfen kann. Ich vermute, dass dies ein Alfresco-Problem ist, aber ich kann es nicht sicher sagen. Das einzige, was ich heute getan habe, um die Konfiguration zu ändern, war, die Permgen-Größe auf 512 MB zu erhöhen, aber das hilft vielleicht nicht, da wir diesmal nicht den PermGen-Fehler erhalten haben.

Irgendwelche Ideen?

+0

Es scheint, dass Sie hier zwei verschiedene Probleme haben. Du hast eine behoben und eine andere aufgedeckt. Leider habe ich keine Ahnung, wie dies eine IllegalStateException von Tomcat aus zu diagnostizieren. Versuchen Sie, den Tomcat-Quellcode herunterzuladen und zu sehen, was an dieser Zeile passiert. – skaffman

+0

Dies ist nicht wirklich auf die Programmierung bezogen, aber der Fehler entsteht durch die Anwendung von Filtern. Vielleicht möchten Sie dort anfangen. – cletus

+0

Dies ist passender auf Serverfault.com gefragt und sollte Ihnen bessere Antworten geben – jitter

Antwort

1

Bis 256-512 MB reoccuring tomcat stabilisiert. Doppeltes RAM garantiert eine Ad-hoc-Verbesserung und sehr wahrscheinlich Situation von den Korrekturen zur Entwicklung. Sonst verliere Zeitprofile, bekomme warum und verdopple irgendwann später den Arbeitsspeicher.

+0

Ja, aber Permgen sollte sowieso nicht hochgehen. Es wird für Dinge wie Konstanten und Klassen verwendet. Ich würde sicherstellen, dass alle Entwicklungseinstellungen deaktiviert sind, da dies dazu führen könnte, dass Tomcat die Dinge neu kompiliert. – CurtainDog

1

Sie sollten auch nach einem Speicherleck suchen - laden Sie Klassen aus dem Krieg, die aus der gemeinsam genutzten Bibliothek geladen werden könnten? Außerdem - bestimmte Logging-Klassen können dazu führen, dass Tomcat an geladenen Klassen (die den Permgen-Raum füllen) festgehalten wird. Schauen Sie in tomcat class-loaders nach und vergewissern Sie sich, dass Sie nicht mehr laden, als Sie von den Klassenladeprogrammen auf Anwendungsebene benötigen.

Verwandte Themen