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

上一篇: Slow Dynamic GSP Reloading in Production on AIX

下一篇: How To Make Window Look More Modern