7

我们使用 Grails 2.2.4、WebSphere 8.0.0.5,它们都在 AIX 6.1.0.0 上运行。Websphere 使用的是 IBM JDK:

Java(TM) SE 运行时环境(构建 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 配置和设置,其中一个工作正常,所以这绝对是某种环境问题。

4

5 回答 5

1

虽然我无法告诉您问题的原因是什么,但我可以为您指出一个可以帮助您查看性能问题的工具。

Grails Miniprofiler 插件是一个出色的工具,用于检查端到端性能,一直到视图(这是您认为问题所在)。

在我的一个项目的一些 GSP 上,我很惊讶地看到一些视图相对于 SQL 调用(通过延迟加载)变得多么沉重。

您可能会怀疑问题出在哪里,并且您可能在该特定平台上遇到了一个晦涩的错误,但是用硬数字指出瓶颈非常有用。

对于它的价值,我在我的任何操作系统/环境中都没有看到你描述的问题。但我确实记得在尝试部署到 JBoss 6.1 时遇到了严重的痛苦(自已解决),所以我对 Grails 在某些环境中可能出现问题的想法很敏感。

祝你好运...

Grails Miniprofiler 插件

于 2013-08-16T07:31:34.750 回答
1

我同意你的怀疑,它是编译时间。也许你的 grails.gsp.view.dir 很慢——也许是一个网络文件系统?

不幸的是,真正的答案是不在生产中启用 GSP 重新加载。这显然是为了方便开发,并不打算在生产中表现良好。

于 2013-08-13T22:48:33.257 回答
1

确保站点网格正在被预处理

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

还要记住视图路径必须以斜线结尾。在您提供的示例中,我没有看到这一点。

于 2013-08-16T06:56:39.110 回答
0

原来问题出在https://plugins.grails.org/plugin/sergiomichels/grails-melody-plugin。谁知道!

于 2013-11-07T22:54:43.843 回答
0
于 2013-08-15T11:36:27.677 回答