La aplicación, cuando está sujeta a carga, a veces, utiliza el 100%.Hilos de Apache Tomcat en estado EN ESPERA con uso de CPU 100%
haciendo un kill -quit <pid>
mostraron más de 1100 hilos en estado de espera como:
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)
............
El estado no cambia incluso cuando el contexto de aplicación es no desplegada O el DB se reinicia.
Por favor, sugiera una causa probable.
servidor de aplicaciones: Apache Tomcat 6.0.26
Max Temas: 1500
Temas en el estado de espera: 1138
Estamos cargando la prueba con 7500 usuarios concurrentes. ¿Hay un estadio para ninguna relación de hilos a concurrencia? –
@Mohit: la prueba de carga es la forma correcta de hacerlo. Depende de cuánto tiempo tarda cada solicitud por usuario y qué procesamiento suelen hacer. http://people.apache.org/~mturk/docs/article/ftwai.html says * Para aprovechar al máximo Tomcat, debe limitar el número de solicitudes simultáneas a 200 por CPU. * – JoseK
7500 concurrentes ** usuarios o solicitudes ** - eso es bastante, ¿así que están agrupados? – JoseK