Grails的Quartz插件-生产环境中的OutOfMemoryError

Grails的Quartz插件-生产环境中的OutOfMemoryError,grails,quartz-scheduler,cloud-foundry,Grails,Quartz Scheduler,Cloud Foundry,我正在尝试将我的Grails2.1.1应用程序部署到cloudfoundry.com。在我的本地计算机上,应用程序运行没有问题。当从BuildConfig.groovy中删除Quartz插件依赖项时,我能够在cloudfoundry上成功启动应用程序 依赖关系: compile ":quartz:1.0-RC5" grails cf日志打印以下错误: Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalin

我正在尝试将我的Grails2.1.1应用程序部署到cloudfoundry.com。在我的本地计算机上,应用程序运行没有问题。当从BuildConfig.groovy中删除Quartz插件依赖项时,我能够在cloudfoundry上成功启动应用程序

依赖关系:

compile ":quartz:1.0-RC5"
grails cf日志打印以下错误:

Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space
下面是我的工作:

package de.tum.wi.fm.game
import org.quartz.JobExecutionContext

class StartGameJob {
    def execute(JobExecutionContext context) {
        def gameRoundId = context.mergedJobDataMap.get('gameRoundId')

        if(gameRoundId) {
            GameRound gameRound = GameRound.get(gameRoundId)
            if(gameRound) {
                Game game = gameRound?.game
                game.currentGameRound = gameRound
                game.save(flush: true)
            }
        }
    }
}
触发器放置在服务中:

def jobParams = [gameRoundId:gameRound.id]
Date gameRoundEndDate = gameRound.endDate.toDate()
ChangeRoundJob.schedule(gameRoundEndDate, jobParams)

您是否尝试为应用程序分配更多内存?您可以使用VMC实现这一点

vmc scale [application name]

按照提示操作,VMC应该询问您希望分配多少内存。

OutOfMemoryError异常确定JVM没有分配足够的内存。您需要增加cloudfoundry实例的内存,从而增加JVM的内存

部署应用程序时,请尝试执行以下命令:

grails -Dgrails.env=production cf-push --memory=2048 --no-start
grails -Dgrails.env=production cf-env-add JAVA_OPTS -Xmx1024m -XX:MaxPermSize=512m
grails -Dgrails.env=production cf-start
第一个命令将把应用程序推(部署)到cloudfoundry实例中,而不会启动它

第二个将设置JVM环境变量、足够的内存设置


第三个命令启动应用程序。

是的,我已经尝试过,并分配了2G内存,但没有任何更改。这些设置是否会影响JVM的-Xms和-Xmx参数?也许给这些参数分配更多内存会有所帮助。