pudo pagina last instalar iniciar equipo java multithreading tomcat pool ajp

java - last - pagina principal de tomcat



¿Cómo puedo monitorear/registrar el grupo de subprocesos de Tomcat? (3)

Tengo una instalación de Tomcat en la que sospecho que el grupo de subprocesos puede estar disminuyendo con el tiempo debido a que los hilos no se han lanzado correctamente. Aparece un error en catalina.out cuando se alcanza maxthreads, pero me gustaría registrar el número de subprocesos en uso en un archivo cada cinco minutos para poder verificar esta hipótesis. ¿Podría alguien por favor poder aconsejar cómo se puede hacer esto?

Además, en esta instalación no existe un administrador de Tomcat, parece que quien haya hecho la instalación original eliminó la aplicación de administrador por alguna razón. No estoy seguro de si el administrador podrá hacer lo anterior o si puedo reinstalarlo sin dañar la instalación existente. Todo lo que realmente quiero hacer es realizar un seguimiento del grupo de subprocesos.

Además, noté que maxthreads para Tomcat es 200, pero el número máximo de conexiones simultáneas para Apache es menor (Apache usa mod_proxy y mod_proxy_ajp (AJP 1.3) para alimentar a Tomcat). Eso también parece incorrecto, ¿cuál es la relación correcta entre estos números?

Cualquier ayuda muy apreciada: D

Actualización: solo una actualización rápida para decir que el acceso directo a JMX funcionó. Sin embargo, también tuve que establecer Dcom.sun.management.jmxremote.host. Lo configuré para localhost y funcionó, sin embargo, sin ningún dado. Si alguien más tiene un problema similar al intentar habilitar JMX, le recomiendo establecer este valor también, incluso si se está conectando desde la máquina local. Parece que es necesario con algunas versiones de Tomcat.

Solo una actualización rápida para decir que el acceso directo a JMX funcionó. Sin embargo, también tuve que establecer Dcom.sun.management.jmxremote.host. Lo configuré para localhost y funcionó, sin embargo, sin ningún dado. Si alguien más tiene un problema similar al intentar habilitar JMX, le recomiendo establecer este valor también, incluso si se está conectando desde la máquina local. Parece que es necesario con algunas versiones de Tomcat.


Acceso directo JMX

Intenta agregar esto a catalina.sh / bat :

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=5005 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

ACTUALIZACIÓN: Alex P sugiere que las siguientes configuraciones también pueden ser necesarias en algunas situaciones:

-Dcom.sun.management.jmxremote.host=localhost

Esto permite conexiones anónimas JMX anónimas en el puerto 5005. También puede considerar JVisualVM, que es mucho más conveniente y permite navegar por JMX a través del complemento.

Lo que estás buscando es Catalina -> ThreadPool -> http-bio-8080 -> varias métricas interesantes.

Servlet de proxy JMX

Un método más fácil podría ser usar el servlet de proxy JMX de Tomcat en: http://localhost:8080/manager/jmxproxy . Por ejemplo, intente esta consulta:

$ curl --user tomcat:tomcat http://localhost:8080/manager/jmxproxy?qry=Catalina:name=%22http-bio-8080%22,type=ThreadPool

Un poco de grep ping y scripting, y usted puede monitorear su aplicación de manera fácil y remota. Tenga en cuenta que tomcat:tomcat es el nombre de usuario / contraseña del usuario que tiene el rol manager-jmx en conf/tomcat-users.xml .


Para una solución más empresarial. He estado usando New Relic en nuestro entorno de producción.

Esto proporciona un gráfico de los cambios en el grupo de subprocesos a lo largo del tiempo.


Puede implementar jolokia.war y luego recuperar los valores de mbeans en JSON (sin el administrador):

http://localhost:8080/jolokia/read/Catalina:name=*,type=ThreadPool?ignoreErrors=true

Si solo desea algunos valores (currentThreadsBusy, maxThreads, currentThreadCount, connectionCount):

http://localhost:8080/jolokia/read/Catalina:name=*,type=ThreadPool/currentThreadsBusy,maxThreads,currentThreadCount,connectionCount?ignoreErrors=true

{ request: { mbean: "Catalina:name="http-nio-8080",type=ThreadPool", attribute: [ "currentThreadsBusy", "maxThreads", "currentThreadCount", "connectionCount" ], type: "read" }, value: { currentThreadsBusy: 1, connectionCount: 4, currentThreadCount: 10, maxThreads: 200 }, timestamp: 1490396960, status: 200 }

Nota: Este ejemplo funciona en Tomcat7 +.