所以我的页面加载时间在30-45秒之间。
一些历史:
这个项目的情况并非总是如此。这个项目正在生产中,所以我有一段时间没有真正触及过代码。我注意到它最后一次更新代码时就开始发生了。我不记得我改变的任何具体问题应该与问题有关。我有其他项目使用相同的Grails版本运行没有问题。
我认为它开始发生在2.2.3中。我现在正在运行2.2.4。
我使用的是x64 JDK 1.7.0_25,Windows 7 x64。
我不确定这里还有什么相关内容。任何帮助表示赞赏!
编辑:使用-noreloading运行无效。
Edit2 :我已尝试完全删除.grails
文件夹,运行clean
,并删除目标文件夹和堆栈跟踪日志。
Edit3 :似乎所花费的时间取决于显示/读取的数据量。小页面需要3-4秒。中页10-12秒......
Edit4 :我通过IntelliJ IDEA 12.1.4 x64(idea64.exe)运行它。我也在IntelliJ之外尝试了相同的结果。
Edit5 :数据库是支持整个公司的Oracle企业。它由全职管理员管理。这不是我本地计算机上的MySQL服务器。
Edit6 :在TEST(test war
)中部署时,应用程序也能正常运行,但在使用test run-app
运行时仍然很慢。
开始到达某个地方:
我下载了JDK 1.7.21并运行了应用程序,它开始工作没有问题!然后我运行clean
触发重新编译,它停止工作...... grr
现在1.7.21仍处于活动状态,我尝试-noreloading
并且它有效!
Annnd ...现在即使我不使用-noreloading
..........
我已经回到了1.7.25 ..跑clean
,它有效。 Sooooooo是的...解释一下。
现在它已不复存在了。
答案 0 :(得分:1)
这是在Linux下但可能有用:
如果您在IDE中运行代码:
ps auwx | grep java
-Dgrails.console.class = grails.build.logging.GrailsEclipseConsole -Dosgi.requiredJavaVersion = 1.6 -Xms40m -Xmx768m -XX:MaxPermSize = 256m -
正如您所看到的,Xms和Xmx的内存设置非常低......
在IDE中应该有一个INI文件:
more STS.ini
1 -vm
2 /usr/lib/jvm/java-6-openjdk-amd64/bin/java
3 -startup
4 plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
5 --launcher.library
6 plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120913-144807
7 -product
8 org.springsource.sts.ide
9 --launcher.defaultAction
10 openFile
11 -vmargs
12 -Dgrails.console.enable.interactive=false
13 -Dgrails.console.enable.terminal=false
14 -Djline.terminal=jline.UnsupportedTerminal
15 -Dgrails.console.class=grails.build.logging.GrailsEclipseConsole
16 -Dosgi.requiredJavaVersion=1.6
17 -Xms40m
18 -Xmx768m
19 -XX:MaxPermSize=256m
您可以升级这些值并尝试重新启动IDE ...
我还建议你在代码运行之前运行nmon之前/期间运行并监视磁盘/ cpu /网络吞吐量。
你可能会发现你正在锤击导致问题的开发盒。
如果制作很好,我真的不知道问题是什么..
E2A啊啊忘了它是在窗户下面所以没有挡风,但不是我试过它 - http://sourceforge.net/projects/jnmonanalyser/
E2A: 1.启用DataSource.groovy调试:
dataSource {
pooled = true
driverClassName ="com.mysql.jdbc.Driver"
username = "aaa"
password = "aaaa"
//SQL Logging - refer to Config.groovy at hibernate.sql now
logSql=true
...
config.groovy - 如果您在BootStrap中尝试添加记录时遇到问题,这将阻止您的应用运行
//失败时返回错误 //grails.gorm.failOnError=true
启用log4j并使用此部分或部分内容:
// log4j configuration
log4j {
appender.stdout = "org.apache.log4j.ConsoleAppender"
appender.'stdout.layout'="org.apache.log4j.PatternLayout"
appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n'
appender.stacktraceLog = "org.apache.log4j.FileAppender"
appender.'stacktraceLog.layout'="org.apache.log4j.PatternLayout"
appender.'stacktraceLog.layout.ConversionPattern'='[%r] %c{2} %m%n'
appender.'stacktraceLog.File'="stacktrace.log"
appender.'stacktraceLog.MaxFileSize'="1MB"
rootLogger="error,stdout"
logger {
grails="error"
StackTrace="error,stacktraceLog"
org {
codehaus.groovy.grails.web.servlet="error" // controllers
codehaus.groovy.grails.web.pages="error" // GSP
codehaus.groovy.grails.web.sitemesh="error" // layouts
codehaus.groovy.grails."web.mapping.filter"="error" // URL mapping
codehaus.groovy.grails."web.mapping"="error" // URL mapping
codehaus.groovy.grails.commons="info" // core / classloading
codehaus.groovy.grails.plugins="error" // plugins
codehaus.groovy.grails.orm.hibernate="error" // hibernate integration
// Hibernate should be on - if you want to catch sql logs
springframework="off"
hibernate="on"
//hibernate.SQL = 'debug'
//hibernate.type = 'trace'
//hibernate.SQL = 'info,hibernate'
//hibernate.type = 'info,hibernate'
//hibernate = 'info,hibernate'
//apache.commons.digester.Digester = 'debug,javaclasses'
}
}
additivity.StackTrace=false
}
尝试捕捉它正在做的事情,在浏览器上运行开发人员工具也是值得的,无论是Chrome的firefox还是试图弄清楚它当时正在采用什么元素 - 但是在日志和浏览器开发者工具之间应该说谎你的答案。
答案 1 :(得分:0)
通常你可以通过
解决这个问题grails clean
grails命令行上的(我在IntelliJ IDEA中通过CRTL + ALT + G打开它)。
这将擦除所有已编译的文件,并将从头开始重新编译您的项目(afaik),这通常会删除这样的错误。这不是对底层问题的真正修复,但它解决了这个问题。如果你问我,Grails是高度实验性和不稳定的,我有很多奇怪的错误,在做clean
时通常会消失。顺便说一句,我也在Windows 7 x64上使用2.1.5。
答案 2 :(得分:0)
对于具有3GB RAM的系统,我的环境变量设置为:
JAVA_OPTS
-Xms512m -Xmx1g
STS.ini设置:
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-product
com.springsource.sts.ide
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
384M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xmn128m
-Xms1024m
-Xmx1024m
-Xss2m
-XX:PermSize=256m
-XX:MaxPermSize=512m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=50
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:+UserParallelGC
8)问题可能与JDK和Grails版本组合有关。 OpenJDK 1.7u25 and spring loaded似乎有错误。好的,你没有使用OpenJDK,但无论如何都要尝试使用其他版本。试试JDK1.7u03
9)尝试使用-server标志的JVM,看看它是否提高了运行时性能。
grails run-app -server
答案 3 :(得分:0)
所以发生这种情况的原因是:
JDK 1.7.25