Tomcat verbrauchen die hohe CPU -
Tomcat.exe verbraucht 75% der CPU.
Ist irgendjemand eine Ahnung, warum es passiert und wie können Sie verringert werden?
Ich bin mit Tomcat5.5 & J2SDK v 1.4.2_12
Wenn ich starten Sie den Tomcat-server, den man bei 10 - 15%, ich starte mit einer Anwendung 'Einer', sobald deren Einsatz mehr als 5-6 mal die CPU-Stillstand bei 60 - 70% und nie nach unten senkt. Ich benötige den server neu starten dann. Die gleiche Anwendung läuft, über die Produktion Feld und nicht ein problem zu schaffen, aber auf der UAT-box es ist...
InformationsquelleAutor Miral | 2009-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu verstehen, was geschieht, sollten Sie versuchen, führen Sie es unter einem profiler. Versuchen Sie, die YourKit (http://www.yourkit.com/) oder Netbeans (http://profiler.netbeans.org/docs/help/5.5/profile_j2ee_profileproject.html).
Den YourKit eine bessere integration mit tomcat.
InformationsquelleAutor J-16 SDiZ
Wenn Sie mit 75% CPU und verstehe nicht, warum, ich schlage vor, Sie ein kill -3 auf den tomcat-Prozess (ctrl-break, wenn Sie eine Konsole), um eine thread-dump (bei hoher Last!). In meiner Erfahrung, die meisten threads sollten entweder im Leerlauf oder im io-wait. Blick für jeden einzelnen Zweig der code, der wiederholt vorkommen in der stack-traces und das ist Ihr wahrscheinlich Schuldigen (nicht-io wartet!). Dies ist der "poor man ' s profiler" das ist ganz oft der beste und effizienteste Weg, diese Probleme zu lösen.
Danke @Frizz1977 🙂
InformationsquelleAutor krosenvold
Lambda-Sonde ist ein sehr nützliches Werkzeug für die überwachung von Tomcat.
Sind Sie mit einem quad-CPU system? Wahrscheinlich Tomcat ausgeführt wird 100% in 3 von Ihnen. Ich würde erstmal testen, für eine unendliche Schleife oder so etwas wie, dass in einer Anwendung.
InformationsquelleAutor kgiannakakis
Meinen logs waren voll des Tomcat-logs. Ich löschte alle und die CPU-Auslastung gegangen ist drastisch nach unten.
InformationsquelleAutor Murali
Erster Linie (dies gilt für alle java-Anwendungen) Sie müssen den pin-auf die thread-CPU. Dies ist möglich, in JDK 1.6. Es ist getan durch die Verwendung von java.lang.management.ManagementFactory.getThreadMXBean().
Hier ist Beispiel-Anwendung (JSP):
Nach, dass Sie einen thread dump und analysieren Sie den code in diesem thread zu lösen übermäßige CPU-Auslastung.
InformationsquelleAutor huksley
Alle Antworten abdecken, wie zu tun, eine genaue diagnose, zusätzlich möchte ich hinzufügen, dass, aus meiner Erfahrung, eine Endlosschleife, in eine Ihrer Anwendungen ist wahrscheinlich der Schuldige.
Als J-16 SDiZ sagte, Ihre beste Wette ist, führen Sie den profiler, um das problem einzugrenzen, um eine Anwendung.
InformationsquelleAutor James McMahon
Dies ist wahrscheinlich durch die Anwendung(en), die Sie ausgeführt werden, die oben auf dem tomcat. Natürlich, wenn Sie haben sehr hohen traffic auf Ihre Anwendungen, diese könnte auch der Grund sein.
InformationsquelleAutor Juha Syrjälä
Wir haben gerade ein problem mit unseren tomcat-Instanz läuft mit sehr hohe cpu-Auslastung, schwingen bis zu 100% und mehr alle paar Sekunden auf und dann kurz wieder nach unten. Dies geschah den ganzen Tag und die ganze Nacht lang, ob der server war, irgendwelche arbeiten zu verrichten oder nicht. Wir laufen mit tomcat 8 und java 8.
Finden wir nicht unsere Lösung in einer web-Suche, so bin ich Entsendung es hier, in der Hoffnung zu helfen, jemand anderes.
Hatten wir verwendet die Konfigurations-option in die tomcat/conf/Catalina/localhost Verzeichnis, in dem wir bereits von tomcat in ein anderes Verzeichnis, andere als seine eigenen webapps-Verzeichnis. Die xml-Dateien in diesem Verzeichnis wie folgt Aussehen:
Funktionierte, tomcat lief mit dem code in diesen Verzeichnissen, anstatt Ihre eigenen webapps-Verzeichnis. Allerdings hatten wir dieses problem mit der ständig Spitzen cpu-Auslastung.
Testen, wir entfernt die xml-Dateien aus der conf/Catalina/localhost Verzeichnis, und tomcat neu gestartet. Plötzlich hatten wir eine normale, gut erzogene tomcat wieder. Um den tomcat zu diesem anderen Verzeichnis (wo wir kompilieren unser dspace code), benutzten wir nur den Host-Eintrag in conf/server.xml und verändert die appBase Einstellung zu unserem dspace-Verzeichnis:
Diese nun erreicht, was wir wollten, mit einem sehr geringen cpu-Auslastung (unter 1%), wenn der server ruhig ist.
InformationsquelleAutor excyberlabber