Kann ich Tomcat als Dienst ausgeführt wird, um dump-heap?
Ich bin versucht zu haben Tomcat, die derzeit läuft als Dienst auf einem Windows 2003-box -, dump-heap auf einem OutOfMemoryError
.
(Tomcat ausgeführt wird Hudson, die Berichterstattung ein heap space problem, am Ende meines bauen. Läuft der build manuell produziert keine solchen Fehler. Die Hudson Jungs brauchen ein heap-dump, um loszulegen.)
Angewiesen anderswo, ich habe gesagt, dass der Apache-Service-Monitor zum konfigurieren der JVM verwendet wird, um Tomcat zu laufen dump-heap, wenn ein OutOfMemoryError
aufgetreten ist, indem Sie die folgenden JVM-Optionen:
-XX:+HeapDumpOnOutOfMemoryError
Dann Lauf ich die wieder bauen. Sicher genug, es Berichte gab es ein Haufen Fehler. Ich scan die ganze Festplatte auf der Suche für die Standard - java_pid123.hprof
Datei (wo offenbar 123
wird ersetzt durch die PID von der JVM). Keine .hprof
Dateien, die überall existieren.
Ich bin gefangen in einem catch-22: ich muss die heap-dump der Hudson Jungs lösen Ihre Speicherverlust, aber ich kann nicht die heap-dump, wenn ich Hudson unter Tomcat.
Gibt es einige Besondere Art und Weise, wenn Tomcat als Windows-Dienst ausgeführt, um einen heap-dump, die von ihm auf einen OutOfMemoryError?
Die andere Sache, die ich versucht habe zu schreiben, ist es, auf die Startup-und Shutdown-Registerkarten, um die "Java" - option anstelle von "jvm" - option. Ich glaube, das sollte sagen, der Service-Manager versuchen, starten Sie Tomcat mit einem ausführbaren Java-Befehl anstelle der Einleitung der jvm.dll
direkt. Wenn ich dies tun, wird der Dienst nicht gestartet werden kann.
Sicherlich hat jemand anderes ein ähnliches problem gehabt?
InformationsquelleAutor der Frage Laird Nelson | 2010-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schließlich setzen diese ein, um Bett, ich wollte diese Antwort für die anderen, die vielleicht das gleiche problem haben.
Ersten, bei der Installation von Tomcat auf Windows, verwenden Sie nicht die
.exe
installer, obwohl es wird gefördert von Apache. Es wird nicht lassen Sie laufen Tomcat als etwas anderes als das system-Konto, egal was Sie tun. Es scheint, dass das system-Konto verfügt nicht über Berechtigungen zum schreiben.hprof
Dateien in das aktuelle Verzeichnis ist, und keine Menge von Windows-Sicherheit tweaking erscheint, um dieses problem Weg.OK, also hast du installiert Tomcat von der
.zip
Vertrieb. Die Installation als Dienst über dasservice.bat
Skript. Stellen Sie sicher, es ist gesetzt zu einem bestimmten Benutzerkonto ausgeführt wird, dass Sie speziell für diesen Zweck. Stellen Sie sicher, dass der Ordner, den Sie möchten Tomcat zu schreiben, um im Falle eines heap-dump-schreibbar durch Benutzer.Bearbeiten Sie die
service.bat
- Datei, um die-XX:+HeapDumpOnOutOfMemoryError
und die-XX:HeapDumpPath=C:\whatever
Optionen an der richtigen Stelle (wo Sie können, legen Sie die JVM-Optionen). Das sollte den trick tun.InformationsquelleAutor der Antwort Laird Nelson
Haben Sie versucht -XX:HeapDumpPath option?
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
InformationsquelleAutor der Antwort Gennady Shumakher
Fand ich folgenden link, der beschreibt, wie so konfigurieren Sie die tomcat-Dienst (beinhaltet die Einstellung der java-Parameter). Nicht sicher, ob es bezieht sich auf die version, die Sie ausführen.
http://tomcat.apache.org/tomcat-5.5-doc/windows-service-howto.html
InformationsquelleAutor der Antwort Peter Schuetze
Den
.hprof
- Dateien werden anschließend in das aktuelle Verzeichnis. Genau das, was, dass bedeutet für einen windows-Dienst, ist Reine Vermutung, vorausgesetzt, es bedeutet nichts.Schlage ich vor, die Veröffentlichung einer neuen Frage (auf http://superuser.com) Fragen, was das "current directory" bedeutet für einen windows-Dienst.
InformationsquelleAutor der Antwort skaffman
Ab 20 Tipps für die Verwendung von Tomcat in Produktion
Fügen Sie den folgenden, um Ihre JAVA_OPTS in catalina.sh (oder catalina.bat für Windows): -
XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/j2ee/heapdumps
InformationsquelleAutor der Antwort stacker
wenn Sie tomcat installiert haben .exe-Datei, die Sie konfigurieren können tomcat-Dienst zu verwenden, anderen Konto als lokales system-Konto und Sie können zuweisen, Benutzer Rechte auf Verzeichnis "c:\whatever" da, wo Sie erstellen Ihre dump-Datei. eine Sache, die hier zu erinnern, tomcat-Dienst nicht ausführen, die mit dem Konto mit Administratorrechten. so erstellen Sie eine einfache Benutzeroberfläche in windows(Mitglied der Gruppe Benutzer) und stellen Sie tomcat-Dienste für Benutzer dieses Konto. und geben, dass der Benutzer Rechte auf "c:\whatever" Verzeichnis. Dies wird die Benutzer-directory-Rechte-Problem, aber Sie müssen zum konfigurieren von tomcat für Memory-dumps Fehler.
InformationsquelleAutor der Antwort Adeel Ahmad
Wenn der java-Prozess läuft als Windows-Dienst Sie können die Generierung der heapdump mithilfe der unten aufgeführten Schritte,
Wenn irgendwelche Ausnahme mit JDK/JRE 7 versuchen Sie das gleiche mit JDK/JRE 8
Eigentlich Stand ich vor ein Problem im jmap mit JDK 7, aber als ich umgezogen bin, JDK 8, ich wäre in der Lage, erfolgreich zu generieren, die den heap-dump mit demselben Befehl
InformationsquelleAutor der Antwort Anil Agrawal