2012-09-27 15 views
12

Sto usando Grails 2.0. Ero abituato a sviluppare con Grails 1.3.7 ma quando eseguo un'applicazione con Grails 2.0 le prestazioni sono molto lente. Una pagina può richiedere più di 30 secondi per mostrare ed è molto imbarazzante e improduttiva.Grails 2.0 run-app performance molto lenta

Ho cercato su Google e ho trovato che i GSP in 2.0 sono in alcuni casi 10 volte più lenti di 1.3.7; Greame ha spiegato che esiste un nuovo modo di gestire i GSP in dev mod, ma quando eseguo grails prod run-app ho quasi lo stesso problema.

Cosa devo fare per accelerare il processo di sviluppo? Sto perdendo troppo tempo.

PS: I miei GRAILS_OPTS sono "-server -Xmx600M -Xms600M XX: MaxPermSize = 250m -Dfile.encoding = UTF-8 -Dserver.port = 9090"

+0

Mi sono appena spostato da 1.3.7 a 2.1.1 e non vedo alcun problema di prestazioni, ma vedo un miglioramento.Puoi aggiornare alla 2.1.1. Puoi anche convertire tutte le tue azioni in metodi anziché in chiusure e vedere se questo aiuta? – allthenutsandbolts

+0

Prova a profilare la tua app con, ad esempio, VisualVM. Non puoi migliorare le prestazioni quando non sai quale parte migliorare. –

+0

Sono principalmente GSP molto lenti. C'è anche un plugin di risorse che fa molto naso nella console –

risposta

7

ho postato un piccolo annuncio sulla mailing list di circa 20 minuti fa: http://grails.1312388.n4.nabble.com/GSP-Compilation-tt4632864.html#a4635595

Questo problema è stato risolto: http://jira.grails.org/browse/GRAILS-9423

si prega di verificare le prestazioni del l'ultima build 2.1.x snapshot.

provare questi

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

Per me, il trucco è stato quello di impostare Xmx e Xms allo stesso valore e impostare il PermSize e MaxPermSize allo stesso valore. sun.reflect.inflationThreshold aiuta con il permgen. (http://jira.grails.org/browse/GRAILS-7878?focusedCommentId=66447&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-66447 nella jira Grails per la spiegazione)

btw. Ho archiviato questo problema 10 minuti fa: http://jira.grails.org/browse/GRAILS-9444 Se è interessante, si prega di votare sul problema.

+0

Grazie .. Suppongo che io abbia migrato a 2.1 o 2.2? –

+0

Un'altra domanda è possibile ridurre il numero di thread in esecuzione? Con il plugin java-melody vedo 250 thread la maggior parte di loro in attesa e non saranno mai usati. Questo rallenta l'applicazione e richiede molta memoria. qualche idea ? –

+0

Vale la pena andare a 2.1.x attualmente. 2.0.x ottiene solo correzioni critiche e 2.1.x ha già molti miglioramenti rispetto a 2.0.x. Passare da 2.0.x -> 2.1.x è abbastanza apparente dal momento che non ci sono troppe differenze. –

2

Per assicurarsi di utilizzare le correzioni più recenti all'agente di caricamento caricato a molla, utilizzare Grails 2.1.x anziché Grails 2.0.x. Per Grails 2.1.1 è possibile aggiornare l'agente di ricaricamento caricato a molla a una versione di istantanea.

è possibile ottenere l'ultimo snapshot da: https://repo.springsource.org/snapshot/com/springsource/springloaded/springloaded-core/

Attualmente è 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.

Sostituire $ GRAILS_HOME/lib/com.springsource.springloaded/springloaded-core/jars/springloaded-core-1.0.6.jar con lo snapshot scaricato (rinominare l'istantanea con lo stesso nome file springloaded-core-1.0. 6.jar).

Questa risposta sarà superata non appena verrà rilasciata la versione 1.1.1 di Springloaded-Core.

3

Grails 2.x è più lento di 1.3.x per la modalità di sviluppo a causa dei miglioramenti di ricarica. Usa un caricatore caricato a molla simile a JRebel.

Assicurarsi che il laptop di sviluppo disponga di memoria sufficiente (> 4 GB), un SSD e una CPU i7 veloce.

Ottieni un laptop recente con 16 GB di memoria & un SSD veloce e non penserai più alla lentezza. Raccomando anche una CPU della serie i7. Al momento costa solo $ 1200.

+0

Sembra che 2.1.1 sia molto affamato di memoria. Sono in i3 (Windows 64-bit) laptop con 4 GB di RAM e utilizzo GGTS con -Xms2048m -Xmx2750m -XX: MaxPermSize = 512m. La mia applicazione è in modalità sviluppo. Quindi quale configurazione suggerisci per l'hosting di un'app minima di Grain 2.1.1? – tusar

+3

4 GB di memoria? Questo è un requisito ridicolo. – Tyler

+2

Sviluppo una dozzina di app node.js su un VPS single-core con 1 GB di RAM e ho dovuto creare un nuovo VPS quad-core da 8 GB esclusivamente per lo sviluppo di un singolo progetto Grails! 2 GB sembra finora sufficiente (controllo free-m) ma ancora, rispetto al nodo ...... Per fortuna non devo ospitare questa app da solo quando è finito ... –