Grails 2.0 run-app性能非常慢

时间:2012-09-27 10:26:52

标签: performance grails grails-2.0

我正在使用Grails 2.0。我曾经在Grails 1.3.7下开发,但是在Grails 2.0下运行应用程序时性能非常慢。一个页面可能需要超过30秒才能显示,这非常令人尴尬和无益。

我用谷歌搜索,我发现2.0中的GSP在某些情况下比1.3.7慢10倍; Greame解释说在dev mod中有一种处理GSP的新方法,但是当执行grails prod run-app时我遇到了几乎相同的问题。

我应该怎样做才能加快开发过程?我失去了太多时间。

PS:我的GRAILS_OPTS是“-server -Xmx600M -Xms600M -XX:MaxPermSize = 250m -Dfile.encoding = UTF-8 -Dserver.port = 9090”

3 个答案:

答案 0 :(得分:7)

我在大约20分钟前在邮件列表上发布了一个小公告: http://grails.1312388.n4.nabble.com/GSP-Compilation-tt4632864.html#a4635595

此问题已修复: http://jira.grails.org/browse/GRAILS-9423

请测试最新2.1.x快照版本的性能。

试试这些

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

对我来说,诀窍是将Xmx和Xms设置为相同的值,并将PermSize和MaxPermSize设置为相同的值。 sun.reflect.inflationThreshold有助于permgen。 (Grails jira中的http://jira.grails.org/browse/GRAILS-7878?focusedCommentId=66447&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-66447用于解释)

顺便说一句。我在10分钟前提交了这个问题: http://jira.grails.org/browse/GRAILS-9444 如果有意思,请就此问题投票。

答案 1 :(得分:3)

由于重新加载改进,Grails 2.x在开发模式下比1.3.x慢。它使用类似于JRebel的Spring-Loaded重载代理。

确保您的开发笔记本电脑有足够的内存(> 4GB),SSD和快速i7 CPU。

最近推出一款16GB内存笔记本电脑一个快速的SSD,你不会再考虑缓慢了。我还推荐一款i7系列CPU。目前仅花费约1200美元。

答案 2 :(得分:2)

要确保使用Spring-Loaded重新加载代理的最新修补程序,请使用Grails 2.1.x而不是Grails 2.0.x.对于Grails 2.1.1,您可能希望将Spring-Loaded重新加载代理升级到快照版本。

您可以从以下位置获取最新快照: https://repo.springsource.org/snapshot/com/springsource/springloaded/springloaded-core/

目前是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

用下载的快照替换$ GRAILS_HOME / lib / com.springsource.springloaded / springloaded-core / jars / springloaded-core-1.0.6.jar(将快照重命名为相同的文件名springloaded-core-1.0.6的.jar)。

一旦springloaded-core版本1.1.1发布,这个答案就会过时。