我们有一种情况,我们有一个基于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会话以限制内存中的对象数量。
以下是一些其他细节:
任何建议都将不胜感激。
谢谢,
约翰