Frage

Ich habe eine Webanwendung, die sehr langsam und gelegentlich hängt. Es handelt sich um eine schulbezogene Wicket-App mit Berichterstattung und Bearbeitung sowie ein Servlet, das von automatisierten Kunden verwendet wird, um Daten über https zu erhalten/postieren.

In geschäftigen Zeiten, in denen viel Bearbeiten/Hochladen/Herunterladen stattfindet, wird die App träge und reagiert nicht. Ich bekomme Wicket "Pagemap Immer noch gesperrt" Fehler. Tomcat scheint weiter zu tuckern. Speicherverbrauch ist verwaltbar, ca. 50 m.

Ich habe YourKit eingerichtet, um einige Profiling -Informationen zu erhalten, und während einer geschäftigen Zeit wurde festgestellt, dass hier 81% der Tomcat -CPU -Zeit hier verbracht werden:

org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run()
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(Object[])
org.apache.jk.common.ChannelSocket.processConnection(MsgContext)
org.apache.jk.common.ChannelSocket.receive(Msg, MsgContext)
org.apache.jk.common.ChannelSocket.read(MsgContext, byte[], int, int)
java.io.BufferedInputStream.read(byte[], int, int)
java.io.BufferedInputStream.read1(byte[], int, int)
java.io.BufferedInputStream.fill()
java.net.SocketInputStream.read(byte[], int, int)
[Wall Time]  java.net.SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int)

In dieser App habe ich ungefähr 250 Clients, die den Server über SSL befragen, um alle 30 Sekunden nach Updates zu fragen. Meistens gibt dies schnell eine leere Antwort zurück. Gelegentlich gibt es eine Flut von DB -Aktivitäten, und es können eine ganze Reihe von Daten (einige MB) an den Kunden zurückgeschickt werden.

Woher stammt diese 81% -Aktivität? Könnten ein paar Kunden mit wirklich langsamen Verbindungen Tomcat -Threads verlegen, indem sie auf eingehende Anforderungskörper warten?

Jemand hat so etwas gesehen oder Ratschläge, wie man dies testet/Fehler behebt/behebt?

War es hilfreich?

Lösung

Sie sollten eine Testumgebung einrichten und versuchen, diese mit einem Lasttest zu reproduzieren.
Auf diese Weise können Sie die Ursache isolieren. Ansonsten gibt es zu viele Faktoren.
Auf diese Weise können Sie auch die Behebung ausprobieren, ohne Ihr Produkt zu gefährden.

Andere Tipps

Der Speichergebrauch ist wahrscheinlich die Ursache.
Sie sollten den Speichergebrauch für den Java -Prozess überprüfen, um zu sehen, wie viel er wird.
Wenn es nicht genug erhält, müssen Sie den XMX JVM -Parameter festlegen, wo immer diese für Tomcat eingestellt sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top