java - Mejorando el arranque lento de JBoss 5
jboss5.x (10)
Hemos actualizado de JBoss 4 (y JDK 5) a JBoss 5 (y JDK 6). El problema es que la hora de inicio ha pasado de 1,5 minutos (en JBoss 4) a más de 4 minutos.
18:53:35,444 INFO [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)] Started in 3m:9s:262ms
Parece que el componente que está demorando más tiempo en inicializar JBoss es el JMX.
18:50:41,926 INFO [LogNotificationListener] Adding notification listener for logging mbean "jboss.system:service=Logging,type=Log4jService" to server org.jboss.mx.server.MBeanServerImpl@1adc122[ defaultDomain=''jboss'' ]
18:52:38,797 INFO [JMXConnectorServerService] JMX Connector server: service:jmx:rmi://lharel2/jndi/rmi://lharel2:1090/jmxconnector
Desde el registro del servidor DEBUG, obtengo estas líneas en el momento problemático:
2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) vfsfile:/C:/QC/Views/QCDev/jboss-5.1.0.GA/server/default/deploy/jmx-console.war/ endpoint mappings:
2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) Processing unit=jmx-console.war, structure: jmx-console.war
2009-12-18 18:52:35,209 DEBUG [org.jboss.deployment.OptAnnotationMetaDataDeployer] (main) Deployment is metadata-complete, skipping annotation processing, ejbJarMetaData=null, jbossWebMetaData=org.jboss.metadata.web.spec.Web23MetaData@1f, jbossClientMetaData=null, metaDataCompleteIsDefault=false
No hay EJB en el proyecto.
Los ajustes de memoria son:
-Xms128m -Xmx512m -XX:MaxPermSize=256m
¿Tienes alguna idea de cómo se puede mejorar la hora de inicio de JBoss?
Actualización: hasta ahora no tuve suerte, probé la sugerencia de Shreeni (cambió el escaneado de xmls). El servidor no se está ejecutando en modo de depuración, por lo que la sugerencia de MicSim no es relevante
Desactive el análisis de anotaciones y otras funciones que no necesite https://community.jboss.org/wiki/jboss5xtuningslimming
Cuando inicia / detiene JBoss desde eclipse, no limpia las carpetas tmp y de trabajo correctamente. Configure una configuración de la Herramienta externa y ejecute un archivo por lotes para eliminar todo lo que hay en las carpetas tmp y de trabajo antes de cada inicio.
Pude acelerar el funcionamiento del perfil "predeterminado" de 15/20 minutos a 5 minutos.
¿Necesitas la aplicación de consola JMX? Lo pragmático sería desinstalarlo del servidor, aún podría usar jconsole o jvisualvm para básicamente lo mismo.
Consulte http://community.jboss.org/wiki/jboss5xtuningslimming especialmente la parte "Tuning".
Esa es una brecha terriblemente grande en los registros. Sugiero cambiar la configuración del registro para registrar todo en el nivel DEBUG, en lugar de INFO. Esto generará muchas más entradas de registro, pero esperamos que lo ayude a reducirlo.
La forma más fácil de hacer esto es establecer la propiedad del sistema -Djboss.server.log.threshold=DEBUG
al iniciar JBoss
Estoy usando JBoss 5.1.0 con un Macbook pro (2.26ghz 4gb) sin aplicaciones, se inicia en 54s
15:00:26,449 INFO [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)] Started in 54s:720ms
Hice una nueva configuración basada en el "default". El JOS dataosurce apunta a una base de datos Postgres en lugar de la "Base de datos hipersónica" (en la base de datos de memoria)
Puede consultar este link para evitar el análisis innecesario de anotaciones, lo que podría acelerar el inicio de su servidor.
Su sospecha sobre la consola jmx puede ser engañosa. Puede haber otros componentes que realicen trabajos en segundo plano no relacionados con la consola jmx. En mi experiencia, tuvimos un problema en el que un pequeño archivo de guerra parecía tardar 3 minutos en cargarse. Era inocente El culpable se debió en parte a un archivo EAR con muchas guerras y frascos.
Si bien no soy un experto, sugeriría lo siguiente:
- Intenta subir el registro a TRACE. Al hacer esto, fui testigo de uno de los implementadores (EJBDeployer, creo) que escaneaba los WAR innecesariamente en uno de nuestros EAR. Luego deshabilité manualmente el análisis de esos archivos WAR.
- Ejecutar wireshark durante el inicio. Descubrí que algunos archivos de guerra se colgaban mientras esperaba una respuesta de una solicitud DTD externa. Esos sitios web ya no existían o no servirían adecuadamente los archivos DTD a programas basados en Java. Podría acelerarlo haciendo que los programadores usen archivos DTD locales o que reflejen esos DTD localmente y que tengan / etc / host loopback localmente.
Supongo que estás empezando en modo de depuración. Este modo puede ser hasta 3 veces más lento que el modo normal. Pero también puede haber un problema al cambiar de JDK5 a JDK6. Encontré esta solución here en la red:
He resuelto eso. Es un problema de depuración. He cambiado mi configuración de depuración de:
wrapper.java.additional.26=-Xdebug wrapper.java.additional.27=-Xnoagent wrapper.java.additional.28=-Djava.compiler=NONE wrapper.java.additional.27=-Xrunjdwp:transport=dt_socket,address=7199,server=y,suspend=n
a:
wrapper.java.additional.26=-Xdebug wrapper.java.additional.27=-Xrunjdwp:transport=dt_socket,address=7199,server=y,suspend=n
y JBoss se vuelve rápido de nuevo.
Espero que esto ayude.
Tuve un problema como este, pero encontré una buena mejora al establecer el tamaño de pila inicial y máximo en los mismos valores, quiero decir:
-Xms512m -Xmx512m
Con esto, mejoré de 4 a 2 minutos el tiempo de inicio.
Un disparo al cielo azul sin más información.
Tiempos de espera de la red: 1,5 minutos de retraso al implementar jmx-console.war puede indicar un tiempo de espera de la red (por ejemplo, 3 x 30 segundos). Intente iniciar JBoss y vincularlo a una dirección IP específica mediante el argumento de línea de comandos
-b
o la propiedad del sistemajboss.bind.address
. Además, trate de asegurarse de que su host y la configuración de resolución de DNS en su sistema sean correctos.JMX también utiliza RMI y es posible que desee establecer el nombre de host del servidor RMI como propiedad del sistema . En algunas distribuciones de Linux, RMI tiene problemas para buscar el nombre de host correcto y jmx-console.war puede intentar conectarse al ''host local incorrecto''. La propiedad del sistema es
java.rmi.server.hostname
Rastreo del sistema: si eso no ayuda, es posible que desee utilizar
strace
para iniciar el proceso java, de modo que pueda ver el punto donde se bloquea el sistema (si realmente se bloquea debido a un tiempo de espera de la red o similar).