我试图将正确的JVM参数传递给部署在Heroku上的play 2.2.1应用程序,但是出现问题。
我的Procfile看起来像这样:
网站: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/