2012-09-27 13 views
12

Estoy usando Grails 2.0. Solía ​​desarrollar bajo Grails 1.3.7 pero cuando ejecuto una aplicación bajo Grails 2.0 el rendimiento es muy lento. Una página puede tardar más de 30 segundos en mostrarse y es muy embarazosa e improductiva.Grails 2.0 run-app rendimiento muy lento

Busqué en Google y encontré que los GSP en 2.0 son en algunos casos 10 veces más lentos que 1.3.7; Greame explicó que hay una nueva forma de manejar los GSP en el mod de desarrollo, pero cuando ejecuto grails prod run-app tengo casi el mismo problema.

¿Qué debo hacer para acelerar el proceso de desarrollo? Estoy perdiendo demasiado tiempo.

PD: Mis GRAILS_OPTS son "-server -Xmx600M -Xms600M -XX: MaxPermSize = 250m -Dfile.encoding = UTF-8 -Dserver.port = 9090"

+0

Acabo de pasar de 1.3.7 a 2.1.1 y no veo ningún problema de rendimiento, más bien veo una mejora.Puede actualizar a 2.1.1. ¿También puede convertir todas sus acciones en métodos en lugar de cierres y ver si eso ayuda? – allthenutsandbolts

+0

Pruebe crear perfiles de su aplicación con, digamos, VisualVM. No puede mejorar el rendimiento cuando no sabe qué parte mejorar. –

+0

Son principalmente GSP los que son muy lentos. También hay un complemento de recursos que hace mucho ruido en la consola. –

Respuesta

7

he publicado un pequeño anuncio en la lista de correo hace unos 20 minutos: http://grails.1312388.n4.nabble.com/GSP-Compilation-tt4632864.html#a4635595

Este problema se solucionó: http://jira.grails.org/browse/GRAILS-9423

favor probar el rendimiento de la última versión 2.1.x instantánea.

Prueba estas

export GRAILS_OPTS="-server -noverify -XX:PermSize=256m 
-XX:MaxPermSize=256m -Xmx600M -Xms600m -XX:+UseParallelGC -Djava.net.preferIPv4Stack=true 
-Dsun.reflect.inflationThreshold=100000" 

Para mí, el truco consistía en establecer -Xmx y XMS el mismo valor y establecer el PermSize y MaxPermSize en el mismo valor. sun.reflect.inflationThreshold ayuda con el permgen. (http://jira.grails.org/browse/GRAILS-7878?focusedCommentId=66447&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-66447 en la jira de Grails para la explicación)

btw. Archivé este problema hace 10 minutos: http://jira.grails.org/browse/GRAILS-9444 Si es interesante, vote sobre el problema.

+0

Gracias. ¿Eso supone que he migrado a 2.1 o 2.2? –

+0

Otra pregunta: ¿podemos reducir el número de hilo en funcionamiento? Con el plugin java-melody veo 250 hilos, la mayoría de ellos esperando y nunca serán utilizados. Eso ralentiza la aplicación y requiere mucha memoria. alguna idea ? –

+0

Vale la pena ir a 2.1.x actualmente. 2.0.x solo obtiene soluciones críticas y 2.1.x ya tiene muchas mejoras sobre 2.0.x. Pasar de 2.0.x -> 2.1.x es bastante simple ya que no hay demasiadas diferencias. –

2

Para asegurarse de estar utilizando las últimas correcciones del agente de recarga Spring-Loaded, use Grails 2.1.x en lugar de Grails 2.0.x. Para Grails 2.1.1 es posible que desee actualizar el agente de recarga de Spring-Loaded a una versión de instantánea.

, usted puede obtener la última instantánea de: https://repo.springsource.org/snapshot/com/springsource/springloaded/springloaded-core/

Actualmente Es https://repo.springsource.org/snapshot/com/springsource/springloaded/springloaded-core/1.1.1.BUILD-SNAPSHOT/springloaded-core-1.1.1.BUILD-20120821.173635-2.jar.

Reemplazar $ GRAILS_HOME/lib/com.springsource.springloaded/springloaded-core/jars/springloaded-core-1.0.6.jar con la instantánea descargada (cambie el nombre de la instantánea al mismo nombre de archivo springloaded-core-1.0. 6.jar).

Esta respuesta quedará obsoleta tan pronto como se libere la versión 1.1.1 de springloaded-core.

3

Grails 2.x es más lento que 1.3.x para el modo de desarrollo debido a las mejoras de recarga. Utiliza el agente de recarga Spring-Loaded que es similar a JRebel.

Asegúrese de que su computadora portátil de desarrollo tenga suficiente memoria (> 4 GB), una SSD y una CPU rápida i7.

Obtenga un portátil reciente con memoria de 16 GB & un SSD rápido y ya no estará pensando en la lentitud. También recomendaría una CPU de la serie i7. Eso cuesta solo alrededor de $ 1200 actualmente.

+0

Parece que 2.1.1 está hambriento de memoria masivamente. Estoy en una computadora portátil i3 (Windows de 64 bits) con 4 GB de RAM y uso de GGTS con -Xms2048m -Xmx2750m -XX: MaxPermSize = 512m. Mi aplicación está en modo de desarrollo. Entonces, ¿qué configuración sugiere para alojar una aplicación mínima de 2.1.1 grails? – tusar

+3

4GB de memoria? Ese es un requisito ridículo. – Tyler

+2

Desarrollé una docena de aplicaciones node.js en un VPS de un solo núcleo con 1GB de RAM, y tuve que crear un nuevo VPS de cuatro núcleos de 8GB únicamente para desarrollar un solo proyecto de Grails. 2GB parece suficiente hasta el momento (comprobando free-m) pero aún así, en comparación con el nodo ... Afortunadamente no tengo que alojar esta aplicación cuando está hecho ... –