我正在尝试将正确的JVM参数传递给部署在Heroku上的play 2.2.1应用程序,但是存在问题。
我的Procfile如下所示:
web:target / universal / stage / bin / myapp -Dhttp.port = $ {PORT} -Dconfig.file = conf / production.conf -J-javaagent:lib / heroku-javaagent-1.4.jar = stdout = true,lxmem = true -J-javaagent:lib / newrelic.jar -J-Dnewrelic.config.file = LIB / newrelic.yml
在本文(https://devcenter.heroku.com/articles/play-support)中,它表示不需要传递PLAY_OPTS,因为它是由生成的脚本读取的。但是,在我的应用程序中,在运行时我读取了JVM参数,它们看起来像这样:
JVM value: -Djava.rmi.server.useCodebaseOnly=true
JVM value: -Xms1024m
JVM value: -XX:MaxPermSize=256m
JVM value: -XX:ReservedCodeCacheSize=128m
JVM value: -Duser.dir=/app/target/universal/stage
JVM value: -Dhttp.port=57279
JVM value: -javaagent:lib/heroku-javaagent-1.4.jar=stdout=true,lxmem=true
JVM value: -Xmx1024m
JVM value: -javaagent:lib/newrelic.jar
JVM value: -Dnewrelic.config.file=lib/newrelic.yml
JVM value: -Dconfig.file=conf/production.conf
因此,脚本显然无法读取“JAVA_OPTS:-Xmx384m -Xss512k -XX:+ UseCompressedOops”。
我还尝试将-Xmx384m -Xss512k -XX:+ UseCompressedOops附加到Procfile,但又一次,它没有用。
我该如何做到这一点?
答案 0 :(得分:1)
问题是生成的播放脚本读取小写的“java_opts”而不是“JAVA_OPTS”。
因此,如果您设置java_opts变量,它将起作用:
heroku config:set java_opts="-Xms128m -Xmx384m -Xss512k -XX:+UseCompressedOops"