使用简单的Grails应用程序超出了Heroku内存配额

时间:2014-07-19 07:04:46

标签: grails heroku

我正在尝试在Heroku上部署非常简单的Grails 2.3.7应用程序(几个REST控制器和Spring Security REST)并不断获取

Error R14 on Heroku (Memory Quota Exceeded)
Process running mem=906M(177.1%)

我的BuildConfig.groovy包含:

grails.project.fork = [
    test: false,
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
]

为什么Grails会消耗这么多内存?我如何调整BuildConfig.groovy以适应512mb Heroku限制?

UPD 问题可能出在我的travis.yml文件中?它看起来像这样:

language: groovy
jdk:
- oraclejdk7
before_script:
- chmod +x grailsw
script: ./grailsw clean
  && ./grailsw refresh-dependencies
  && ./grailsw test-app
before_deploy:
- chmod +x grailsw
deploy:
  provider: heroku
  app: igetit
  on: develop

2 个答案:

答案 0 :(得分:1)

如果您不提及jdk,则heroku默认为open-jdk。只需提及jdk版本。

system.properties并行创建文件application.properties并添加以下行:

java.runtime.version=1.7

提交此文件并重新部署。

参考#Grails R14 Error (Memory quota exceeded) on Heroku

答案 1 :(得分:1)

我的评论作为答案:

如果您使用grails war,则不使用这些内存设置。它们仅用于分叉执行,例如在运行test-app或run-war时。您的内存设置可能由您的JAVA_OPTS控制。我不熟悉Heroku,但你可以看看这里:

Heroku JVM tuning