2009-11-24 8 views
11

Tengo una aplicación Grails, construida en un archivo war (~ 30mb). Cuando intento desplegar el archivo de guerra en Tomcat 6 a través del administrador de aplicaciones, la implementación demora más de 10 minutos o se cuelga indefinidamente. Cuando se bloquea puedo reiniciar Tomcat y la aplicación generalmente se implementa, sin embargo, a veces tengo que repetir el proceso. También noté que durante la implementación, el proceso Java maximiza la CPU y la RAM está en ~ 10-15%.Despliegue de guerra en Tomcat toma edades

Soy bastante nuevo en Java, así que no sé si esto es normal, pero no puedo imaginar cómo podría ser. ¿Hay algo que pueda hacer para hacer que esta carrera sea más suave/más rápida? ¿Hay una mejor manera de implementar que el administrador de aplicaciones de Tomcat?

+0

Verificar registros de tomcat (tomcat/logs /) – Bozho

Respuesta

7

subo la guerra para mi directorio, cd/usr/local/Tomcat, a continuación, ejecute los siguientes comandos:

bin/shutdown.sh 
rm webapps/ROOT.war 
rm -rf webapps/ROOT 
cp ~/ROOT.war webapps 
bin/startup.sh 
+0

Estos parece ser el camino a seguir. La implementación directamente desde la carpeta webapps solo tomó uno o dos minutos.Re: implementación caliente, encontré el sistema un poco lento después de una implementación en caliente, por lo que la estrategia de apagado, implementación e inicio parece ser la mejor. ¡Gracias! – Thody

+1

Otra nota sobre el despliegue en caliente, con un uso del 100% de la CPU, la aplicación en vivo está completamente incapacitada de todos modos, por lo que hay pocos beneficios para mantener a Tomcat en línea durante la implementación. – Thody

1

No utilice el administrador de aplicaciones. Mi manera es subirlo a algún lugar fuera del directorio webapps y luego copiarlo al directorio webapps. Toma mucho menos tiempo desacostumbrado.

+0

¿No colisionará si el servidor de aplicaciones comienza a cargar su aplicación web antes de que se hayan copiado todos los archivos (clase relevante per se)? –

+0

Copio archivos war, no archivos extraídos. – Trick

1

Definitivamente, revise los registros de Tomcat para ver cualquier error/advertencia.

Probablemente tenga alguna lógica de código costosa/sensible en una de las ServletContextListener s. Por lo general, se inicializan durante el inicio. Si es así, entonces lo depurar/perfilar para cualquier problema de rendimiento/fugas.

2

Como se ha señalado Me copiar la guerra a la carpeta de aplicaciones web y dejar que Tomcat hacer la implementación, también es más rápido ahorrándole tiempo.

Tanto Tomcat como Jetty admitirán una implementación en caliente. Simplemente supervisan el directorio de implementación para cambios, por lo que solo puede copiar el archivo .war en ese directorio, y el servidor anulará/desplegará.

Si utiliza un servidor remoto, compruebe que el retraso no es el tiempo necesario para cargar la guerra en un servidor remoto a través de la red.

0

No siempre es suficiente que tenga derechos de acceso para colocar manualmente los archivos en la carpeta webapps; se supone que debe utilizar el Administrador de aplicaciones Tomcat para la implementación del archivo .war y debe hacerlo funcionar.

Para mí, ha sido común que el proceso de carga de un archivo .war en el servidor no se complete; se queda atascado en algún punto intermedio y el archivo solo se carga parcialmente en el servidor, sin importar cuántas veces vuelva a intentarlo. En tales situaciones, he encontrado que vale la pena probar con otro navegador. Por ejemplo, me encontré atascado usando Google Chrome, pero una vez que cambié a un navegador Firefox recién iniciado, todo salió bien.

+0

privilegios de superusuario para la cuenta de implementación puede hacer milagros para usted. la copia directa al sistema de archivos es más rápida que usar la interfaz administrativa de Tomcat – Alfishe

Cuestiones relacionadas