AIX上的动态GSP重新加载缓慢
我们正在使用AIX 6.1.0.0上运行的所有Grails 2.2.4和WebSphere 8.0.0.5。 Websphere正在使用IBM JDK:
Java(TM)SE运行时环境(build)pap6460_26sr3ifix-20121005_02(SR3 + IV27268 + IV27928 + IV28217 + IV25699))
IBM J9 VM(内部版本2.6,JRE 1.6.0 AIX ppc64-64 20120919_122629(启用JIT,启用AOT)
J9VM - R26_Java626_SR3_iFix_1_20120919_1316_B122629
JIT - r11.b01_20120808_24925ifx1
GC-R26_Java626_SR3_iFix_1_20120919_1316_B122629 J9CL-20120919_122629)
JCL - 20120713_01
问题在于使用:
grails.gsp.enable.reload = true
grails.gsp.view.dir="/path/to/gsp/views"
速度很慢,我的意思是20秒钟后才能呈现一个小的GSP。 有趣的是,在我们的本地开发环境中需要2秒。
我们通过设置一个控制器来完成这个问题,除了在空白的GSP上调用render(..)而没有模型中的任何内容,所以我只能假定它是编译的,但我可能是错的。
有没有人遇到过渲染GSP非常慢或者有任何建议的其他实例,这可能是AIX上某种奇怪的JDK问题?
除了赏金之外,任何人都可以得到免费的华夫饼。
编辑只是注意到这一天:有三个相同的WAS配置和设置环境,其中一个工作正常,所以它肯定是某种环境问题。
我同意你的怀疑,那就是编译时间。 也许你grails.gsp.view.dir很慢 - 也许是一个网络文件系统?
不幸的是,真正的答案是不能使生产中的GSP重新加载。 这显然意味着开发方便,并且不打算在生产中表现良好。
确保sitemesh正在预处理
grails.views.gsp.sitemesh.preprocess=true
另外我怀疑这是锁定问题,而不是编译问题。
至少要减少这个问题设置下面的配置
grails.gsp.reload.interval= time in milliseconds.
取决于你的舒适程度。 也许每个小时?
如果您的文件太快更改上次修改时间,则需要通过降低粒度
grails.gsp.reload.granularity= Time in milliseconds.
限制被重新加载的类的数量
grails.reload.excludes
和
grails.reload.includes
还要记住视图路径必须以斜杠结尾。 我没有看到你提供的例子。
尽管我无法告诉您问题的原因是什么,但我可以为您指出一个可帮助您查看性能问题的工具。
Grails Miniprofiler插件是检查端到端性能的绝佳工具,一直到视图(这是您相信您的问题的地方)。
在我的一个项目上的一些GSP上,我惊讶地发现一些观点对于SQL调用(通过延迟加载)有多沉重。
你可能怀疑问题出在哪里,也许你在这个特定的平台上遇到了一个模糊的错误,但是用硬数字来指出瓶颈是非常有用的。
对于它的价值,我没有看到你在我的任何OS /环境中描述的问题。 但是我确实记得在试图部署到JBoss 6.1时遇到了严重的痛苦(因为已经解决了),所以我对Grails在某些环境中可能会遇到的问题非常敏感。
祝你好运...
Grails Miniprofiler插件
链接地址: http://www.djcxy.com/p/14889.html