2012-09-27 14 views
12

Ich benutze Grails 2.0. Ich habe früher unter Grails 1.3.7 entwickelt, aber wenn ich eine Anwendung unter Grails 2.0 starte, ist die Performance sehr langsam. Eine Seite kann mehr als 30 Sekunden dauern und ist sehr peinlich und unproduktiv.Grails 2.0 run-app sehr langsame Leistung

Ich googelte und ich fand, dass GSPs in 2.0 in einigen Fällen 10 mal langsamer als 1.3.7 sind; Greame erklärte, dass es eine neue Möglichkeit gibt, mit GSPs in dev mod umzugehen, aber bei der Ausführung von grails prod run-app habe ich fast das gleiche Problem.

Was soll ich tun, um den Entwicklungsprozess zu beschleunigen? Ich verliere zu viel Zeit.

PS: Meine GRAILS_OPTS sind "-Server -Xmx600M -Xms600M -XX: MaxPermSize = 250m -Dfile.encoding = UTF-8 -Dserver.port = 9090"

+0

Ich bin gerade von 1.3.7 zu 2.1.1 gegangen und sehe keine Leistungsprobleme, eher sehe ich Verbesserung.Können Sie auf 2.1.1 aktualisieren? Kannst du auch alle deine Aktionen in Methoden umwandeln anstelle von Schließungen und sehen, ob das hilft? – allthenutsandbolts

+0

Versuchen Sie, Ihre App mit, sagen wir, VisualVM zu profilieren. Sie können die Leistung nicht verbessern, wenn Sie nicht wissen, welcher Teil verbessert werden soll. –

+0

Es sind hauptsächlich GSPs, die sehr langsam sind. Es gibt auch Ressourcen-Plugin, das eine Menge Nase in der Konsole macht –

Antwort

7

ich stellte eine kleine Ankündigung auf der Mailingliste vor ca. 20 Minuten: http://grails.1312388.n4.nabble.com/GSP-Compilation-tt4632864.html#a4635595

Dieses Problem wurde behoben: http://jira.grails.org/browse/GRAILS-9423

testen Sie die Leistung des neuesten 2.1.x Snapshot-Build.

diese

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

Für mich Versuchen war der Trick Xmx und Xms auf den gleichen Wert zu setzen und die PermSize und MaxPermSize auf den gleichen Wert eingestellt. sun.reflect.inflationThreshold hilft beim permgen. (http://jira.grails.org/browse/GRAILS-7878?focusedCommentId=66447&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-66447 in der Grails jira für die Erklärung)

btw. Ich habe diese Ausgabe vor 10 Minuten eingereicht: http://jira.grails.org/browse/GRAILS-9444 Wenn es interessant ist, bitte abstimmen über das Problem.

+0

Danke .. Das setzt voraus, dass ich auf 2.1 oder 2.2 migrieren muss? –

+0

Eine andere Frage können wir laufende Thread-Nummer reduzieren? Mit Java-Melody-Plugin sehe ich 250 Threads die meisten von ihnen warten und werden nie verwendet werden. Das verlangsamt die Anwendung und benötigt viel Speicher. irgendeine Idee ? –

+0

Derzeit lohnt es sich, zu 2.1.x zu gehen. 2.0.x erhält nur kritische Korrekturen und 2.1.x hat bereits viele Verbesserungen gegenüber 2.0.x. Von 2.0.x -> 2.1.x zu gehen ist ziemlich nahtlos, da es nicht zu viele Unterschiede gibt. –

2

Verwenden Sie Grails 2.1.x anstelle von Grails 2.0.x, um sicherzustellen, dass Sie die neuesten Korrekturen für den Spring-Loaded-Neulade-Agent verwenden. Für Grails 2.1.1 möchten Sie möglicherweise den Spring-Loaded-Neulade-Agent auf eine Snapshot-Version aktualisieren.

Sie können aus den neuesten Snapshot erhalten: https://repo.springsource.org/snapshot/com/springsource/springloaded/springloaded-core/

es ist Zeit 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.

Ersetzen Sie $ GRAILS_HOME/lib/com.springsource.springloaded/springloaded-core/jars/springloaded-core-1.0.6.jar durch den heruntergeladenen Snapshot (benennen Sie den Snapshot in den gleichen Dateinamen um, springloaded-core-1.0. 6.jar).

Diese Antwort wird überholt, sobald die Version 2.1.1 freigegeben wird.

3

Grails 2.x ist wegen der Neulade-Verbesserungen langsamer als 1.3.x für den Entwicklungsmodus. Es verwendet einen Spring-Loaded-Neulade-Agent, der JRebel ähnelt.

Stellen Sie sicher, dass Ihr Entwicklungs-Laptop über ausreichend Arbeitsspeicher (> 4 GB), eine SSD und eine schnelle i7-CPU verfügt.

Holen Sie sich einen aktuellen Laptop mit 16 GB Speicher & eine schnelle SSD und Sie werden nicht mehr an Langsamkeit denken. Ich würde auch eine CPU der i7-Serie empfehlen. Das kostet derzeit nur etwa 1200 Dollar.

+0

Sieht aus wie 2.1.1 ist massiv Speicher hungrig. Ich bin in i3 (Windows 64-Bit) Laptop mit 4 GB RAM und mit GGTS mit -Xms2048m -Xmx2750m -XX: MaxPermSize = 512m. Meine Anwendung befindet sich im Entwicklungsmodus. Welche Konfiguration empfehlen Sie für das Hosting einer minimalen 2.1.1 Grails App? – tusar

+3

4 GB Speicher? Das ist eine lächerliche Anforderung. – Tyler

+2

Ich entwickle ein Dutzend node.js-Apps auf einem Single-Core-VPS mit 1 GB RAM und musste ein neues 8-GB-Quad-Core-VPS nur für die Entwicklung eines einzigen Grails-Projekts erstellen! 2GB scheint bisher ausreichend zu sein (checking free-m) aber trotzdem, im Vergleich zum Knoten ...... Zum Glück muss ich diese App nicht selbst hosten, wenn es fertig ist ... –