# seltsames Auslastungsproblem bei Servlet



## JanHH (14. Okt 2010)

Hallo,

stehe gerade vor dem Problem, dass eine Applikation, bei der es sich um ein relativ komplexes, aber ansonsten normales Servlet handelt (also nix mit JEE, JSP, JSF, JPA etc.), nach einiger Laufzeit (Tage, Wochen, Monate..) 100% CPU-Last belegt, aber mit der Applikation eigentlich nichts auffälliges ist und sie auch nicht übermässig viel Speicher beansprucht. Als einzige Möglichkeit bleibt da ein Server-Neustart, aber das ist natürlich nicht so toll.

Frage, was ist da los? Entweder ein Bug in java oder im Tomcat, was ich aber eher nicht glaube, oder naheliegenderweise einer in meiner Applikation. Also kein Memory Leak aber sozusagen ein "Prozess"- oder "Thread"-Leak. Aber wie kann ich den finden?

Gibts irgendwelche Erfahrungen mit sowas? "Tpyische" Fehlerquellen? Und wie kann ich mir alle zur Zeit aktiven Threads innerhalb meiner Applikation oder der JVM anzeigen lassen? Das würde ja vielleicht schon weiterhelfen beim Fehlersuchen..

Gruß+Danke
Jan


----------



## JohannisderKaeufer (14. Okt 2010)

Um einen Blick darauf zu werfen, was die JVM macht, gibt es die JConsole.

Um zu sehen was Tomcat so treibt, gibt es noch den Tomcat Web Application Manager.


----------



## maki (14. Okt 2010)

JohannisderKaeufer hat gesagt.:


> Um einen Blick darauf zu werfen, was die JVM macht, gibt es die JConsole.
> 
> Um zu sehen was Tomcat so treibt, gibt es noch den Tomcat Web Application Manager.


Anstatt JConsole nimmt man heute VisualVM, und anstatt den Tomcat Web Application Manager nimmt man doch gleich Lambda Probe


----------



## JohannisderKaeufer (14. Okt 2010)

maki hat gesagt.:


> Anstatt JConsole nimmt man heute VisualVM, und anstatt den Tomcat Web Application Manager nimmt man doch gleich Lambda Probe



Da gebe ich dir gerne recht. Du solltest aber auch bedenken, das jconsole und der TWAM schon vorhanden sein sollten und daher nicht nachinstalliert werden müssten.


----------



## maki (14. Okt 2010)

VisualVM kommt mit dem JDK, muss also auch nicht nachinstalliert werden 
JConsole gibt es übrigens nur noch "zum nach installieren", wird nicht mehr mitausgeliefert.

LamdbaProbe ist eine JMX Console für den Tomcat(kann auch webapps installieren/steuern/logs auslesen/etc.pp.), kann VisualVM (oder JConsole wenn man drauf besteht, zB. wegen einer veralteten JVM) auch ersetzen (mit Ausnahme der Profiler Features), muss aber wieder nachinstalliert werden.


----------



## JanHH (14. Okt 2010)

Danke für die Antworten, hilft mir aber  nur bedingt weiter. Ich komme so "von aussen" nicht so ohne weiteres an den Tomcat ran, der Server läuft ja bei einem Kunden. Mir schwebt eher sowas vor, dass ich innerhalb der Applikation selber die JVM frage, was gerade los ist, und bei Bedarf (klick auf irgendeinen Button irgendeiner Webmaske) die Infos in ein Logfile schreibe oder sie übers Web anzeige. Ich könnte das mit JConsole etc. natürlich lokal bei mir zuhause untersuchen, aber der Fehler tritt seltsamerweise nur bei einem bestimmten Server bei einem Kunden auf.


----------



## maki (14. Okt 2010)

JanHH hat gesagt.:


> Danke für die Antworten, hilft mir aber  nur bedingt weiter. Ich komme so "von aussen" nicht so ohne weiteres an den Tomcat ran, der Server läuft ja bei einem Kunden. Mir schwebt eher sowas vor, dass ich innerhalb der Applikation selber die JVM frage, was gerade los ist, und bei Bedarf (klick auf irgendeinen Button irgendeiner Webmaske) die Infos in ein Logfile schreibe oder sie übers Web anzeige. Ich könnte das mit JConsole etc. natürlich lokal bei mir zuhause untersuchen, aber der Fehler tritt seltsamerweise nur bei einem bestimmten Server bei einem Kunden auf.


Kann der Kunde selber denn LamdbaProbe installieren? (wenn auch nur vorrübergehend)

Sonst wird es schwer imho.


----------



## JanHH (15. Okt 2010)

Unser Admin, der den Server des Kunden betreut, hat sich jetzt mit LambdaProbe beschäftigt, es auf einem Testserver installiert, und demnächst wirds dann auch auf dem Kundenserver installiert. Scheint schon genau das zu sein, was ich suche. Vielen Dank.


----------

