grails - 性能问题碧 Jade 报告和grails/groovy

标签 grails groovy jboss jasper-reports

在grails应用程序中使用Jasper Reports时,生成PDF时遇到严重的性能问题。我正在调用jasperService:

def reportDef = jasperService.buildReportDefinition(parameter, LocaleContextHolder.getLocale(), [data: emptyData])

在Jboss中运行了几次,性能很好。 X个小时后,性能比Jboss启动后差了100倍以上。对于只创建一页的PDF,响应时间从7-12秒变为几分钟。我确定性能延迟是在此调用之内的,因为我已在其周围添加了时间度量。由于报表数据是在参数内传递的,因此我也可以排除数据库连接问题。

我已经分析了HEAP,但它的使用率约为50%,并且在创建PDF时变化不大。整体内存也未完全使用。
我已经分析了PermGen,但是还远远不够。

知道PDF的创建会非常消耗CPU,因此在创建过程中CPU会永久以100%的速度运行。我确保没有其他进程阻止PDF的创建,首先,通过多次重新启动该进程,并且没有任何差异,因此我可以排除外部中断;第二,如果重新启动JBoss,性能会更好。

由于这些事实,我已经开始在运行PDF创建线程时通过分析线程转储来分析JBoss本身。我看到没有其他任何东西在运行(除了线程转储线程),无论重启后是慢还是快。我可以看到Groovy在多个线程转储中进行了几个AST转换,这对于Groovy来说并不奇怪。

现在,我感到绝望。 HEAP / PermGen正常,CPU正常。 Jasper Reports / Grails在做什么?

也许有人有类似的经历或根本原因的想法? Jasper Reports中是否有需要/应该清除的内容?

编辑:我的进一步分析得出了JBoss 7.1.1(最新稳定版)是根本原因的未经证实但可以确定的结果。在Tomcat上安装该应用程序后,几天后一切都将顺利运行。我会保持开放。也许有人有过相同的经历并且喜欢张贴它...?否则,我将使用此解决方案将其关闭。我可能会在早期版本的Jboss或7.2 / 7.3上测试我的应用程序。

最佳答案

解决方案是,我们没有意识到JBoss会部分忽略我们的Log4J配置,而是大量登录到我们未监视的server.log中。 Jasper和Grails插件正在将每个PDF生成的数十MB写入日志文件。删除这些日志插入后,性能再次良好。

关于grails - 性能问题碧 Jade 报告和grails/groovy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19049003/

相关文章:

grails - 关于Grails渲染的怀疑

groovy - 链接为零的安全算子

java - 如何解决 JBoss 中的 OutOfMemoryError 错误?

java - Jersey 测试框架: Test Container is null

eclipse - 如何添加新的 JVM 语言,例如Scala、Clojure、Fantom、Groovy 到 Eclipse IDE?

java - 捕获 Wildfly 关闭钩子(Hook)

grails - Grails中的默认错误消息

grails - 在grails vaadin项目中启用自动重新编译

java - 创建 grails 二进制插件会生成 jar 文件,其中包含所有带注释的 groovy 文件

groovy - ElasticSearch Groovy 脚本错误,可疑请求