我尝试将正确的 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,但同样,它不起作用。
我怎样才能做到这一点?
最佳答案
问题是生成的播放脚本读取小写的“java_opts”而不是“JAVA_OPTS”。
因此,如果您设置 java_opts 变量,它将起作用:
heroku config:set java_opts="-Xms128m -Xmx384m -Xss512k -XX:+UseCompressedOops"
关于java - 将正确的 JVM 参数传递给 Heroku 上的 Play 2.2.1 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056013/