Pergunta

Estou tentando passar argumentos JVM corretos para meu aplicativo Play 2.2.1 implantado no Heroku, mas há um problema.

Meu perfil fica assim:

rede: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

Neste artigo (https://devcenter.heroku.com/articles/play-support) diz que PLAY_OPTS não precisa ser passado porque é lido pelo script gerado.No entanto, no meu aplicativo, em tempo de execução, li os argumentos da JVM e eles se parecem com isto:

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

Então o "JAVA_OPTS:-Xmx384m -Xss512k -XX:+UseCompressedOops" aparentemente não é lido pelo script.

Também tentei anexar -Xmx384m -Xss512k -XX:+UseCompressedOops ao Procfile, mas, novamente, não funcionou.

Como posso fazer isso funcionar?

Foi útil?

Solução

O problema era que o script de reprodução gerado lê "java_opts" minúsculo em vez de "JAVA_OPTS".

Então, se você definir a variável java_opts, ela funcionará:

heroku config:set java_opts="-Xms128m -Xmx384m -Xss512k -XX:+UseCompressedOops"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top