Grails Quartz作业性能随着时间的推移而降低/减慢

时间:2016-06-06 21:30:53

标签: spring performance grails gorm quartz-scheduler

我们有一种情况,我们有一个基于Grails 2.3.11的应用程序,使用Quartz(版本2.2.1 / Grails Quartz插件版本1.0.2)作业在后台执行某些长时间运行的进程(1-5分钟)所以轮询服务允许浏览器获取进度。它主要用于从应用程序导入和导出数据。例如,当应用程序首次启动时,200,000+行的导出大约需要2分钟。第二天出口需要3分钟以上。第三天出口需要6分钟以上。

我们已将问题缩小到仅仅是石英作业。当系统处于降级状态时,所有其他网页的响应时间几乎与系统处于最佳状态时的响应时间相同。似乎石英工作在2到3天的时间内趋于线性或递增地减速。这可能与使用有关,也可能是时间,我们不确定。

我们熟悉内存泄漏错误reported by Burt Beckwith并将修复程序添加到我们的代码中。我们之前遇到了内存泄漏,但现在内存管理看起来很健康,即使工作性能比工作性能低5-10倍

对于大多数查询,作业使用GORM。我们已经优化了一些项目使用标准,因此它们重量轻,但是还没有能够改变所有逻辑,因此有许多Gorm对象。在导出的情况下,我们将查询更改为只读。该逻辑还适当地清除了hibernate会话以限制内存中的对象数量。

以下是一些其他细节:

  • 禁用二级缓存
  • 在Tomcat 7上运行
  • 使用MySQL 5.6
  • 使用Java JDK 1.7.0_72
  • 的Linux
  • 系统I / O,交换和CPU都在理由之内
  • Heap和Permgen内存使用情况合理
  • 根据使用级别,垃圾收集稳定且合理一致
  • 即使只有一个用户
  • ,也会出现此问题
  • 我们已完成期间堆栈/线程转储分析
  • 我们一直在使用xRebel(开发)和AppDynamics(生产)分析应用程序,我们已将Java Melody安装到应用程序中
  • 我们在Grails 1.3.8中遇到了这个问题,但最近升级到了2.3.11,这可能会激怒这个问题。

任何建议都将不胜感激。

谢谢,

约翰

0 个答案:

没有答案