我正在尝试将我的Grails 2.1.1应用程序部署到cloudfoundry.com。在我的本地计算机上运行应用程序没有问题。从BuildConfig.groovy中删除Quartz插件依赖项时,我能够成功地在cloudfoundry上启动应用程序。
相关性:
compile ":quartz:1.0-RC5"
grails cf-logs显示以下错误:
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)
答案 0 :(得分:0)
您是否尝试过为应用程序分配更多内存?您可以使用VMC执行此操作;
vmc scale [application name]
按照提示操作,VMC应询问您要分配多少内存。
答案 1 :(得分:0)
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环境变量,足够的内存设置。
第三个命令启动应用程序。