Die Anwendung verwendet manchmal 100%, wenn sie belastet wird.Apache Tomcat-Threads im Status WAITING mit 100% CPU-Auslastung
Doing a kill -quit <pid>
zeigte 1100+ Fäden in Wartezustand als:
Full thread dump Java HotSpot(TM) 64-Bit Server VM (16.3-b01 mixed mode):
"http-8080-1198" daemon prio=10 tid=0x00007f17b465c800 nid=0x2061 in Object.wait() [0x00007f1762b6e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00007f17cb087890> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
at java.lang.Object.wait(Object.java:485)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:458)
- locked <0x00007f17cb087890> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:484)
at java.lang.Thread.run(Thread.java:619)
"http-8080-1197" daemon prio=10 tid=0x00007f17b465a800 nid=0x2060 in Object.wait() [0x00007f1762c6f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00007f17cb14f460> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
at java.lang.Object.wait(Object.java:485)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:458)
- locked <0x00007f17cb14f460> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:484)
at java.lang.Thread.run(Thread.java:619)
............
Der Zustand nicht ändern, selbst wenn die Anwendung-Kontext nicht entfalteten ist oder die DB neu gestartet wird.
Bitte schlagen Sie eine mögliche Ursache vor.
App Server: Apache Tomcat 6.0.26
Max Themen: 1500
Themen im Wartezustand: 1138
Wir testen es mit 7500 gleichzeitigen Benutzern. Gibt es einen Ballpark für kein Verhältnis von Threads zu Concurrency? –
@Mohit: Belastungstests sind der richtige Weg. Es hängt davon ab, wie lange jede Anforderung pro Benutzer dauert und welche Verarbeitung sie normalerweise ausführen. http://people.apache.org/~mturk/docs/article/ftwai.html sagt * Um Tomcat optimal nutzen zu können, sollten Sie die Anzahl gleichzeitiger Anfragen auf 200 pro CPU beschränken. * – JoseK
7500 gleichzeitige ** Benutzer oder Anfragen ** - das ist ziemlich viel - also sind Sie gruppiert? – JoseK