Onde definir as opções de heap java (por exemplo, -Xmx) para o Tomcat 6 no Ubuntu 9.04?

36

Estou executando o Tomcat usando o pacote tomcat6 do Ubuntu 9.04, que faz um daemon do Tomcat usando o jsvc. Gostaria de saber a maneira correta de definir opções de heap Java como -Xmx para o Tomcat. Eu gostaria de colocar a configuração onde quer que seja mais estilisticamente correto, e onde é menos provável que seja sobrescrito pelas atualizações de pacotes do Ubuntu.

As opções que vejo agora:

  • Codifique-os em algum lugar em /etc/init.d/tomcat6 .
  • Codifique-os em algum lugar em /usr/share/tomcat6/bin/catalina.sh .
  • Crie uma linha em /usr/share/tomcat6/bin/startup.sh para definir CATALINA_OPTS para ter os sinalizadores desejados e, em seguida, exporte CATALINA_OPTS como uma variável de ambiente. (Isso parece que vai ser pego por catalina.sh .)

A última opção soa como a melhor, e é defendida (sem explicação do porquê) em Aumentando o heapspace do Java no script de inicialização do Tomcat . Mas eu queria uma segunda opinião. Alguém quer confirmar que não há uma maneira melhor?

    
por Chris 07.05.2010 / 03:32

4 respostas

37

Pelo menos no Ubuntu 10.04, /etc/init.d/tomcat6 origina / etc / default / tomcat6 se existir. É aí que eu coloco minhas substituições, e acredito que geralmente é a maneira "aprovada" de fazer essas mudanças.

    
por 08.07.2010 / 16:51
16

Se você procurar no diretório bin da instalação, verá os scripts catalina.sh ou .bat. Se você observar esses itens, verá que eles executam um script setenv.sh ou setenv.bat, respectivamente, se existirem, para definir variáveis de ambiente. As variáveis de ambiente relevantes são descritas nos comentários na parte superior do catalina.sh/bat. Para usá-los, crie, por exemplo, um arquivo $ CATALINA_HOME / bin / setenv.sh com o conteúdo

export JAVA_OPTS="-server -Xmx512m"

Para o Windows, você precisará, em setenv.bat, algo como

set JAVA_OPTS=-server -Xmx768m

Isso é verdade do tomcat 5.5 a 7. Original answerear link

    
por 13.09.2011 / 15:27
7

Procure por /etc/tomcat6/tomcat6.conf que tenha os gostos de JAVA_OPTS prontos e esperando por você para descomentar (mas somente se você os tiver, eu estou usando o Centos e não o Ubuntu ).

# System-wide configuration file for tomcat6 services
# This will be sourced by tomcat6 and any secondary service
# Values will be overridden by service-specific configuration
# files in /etc/sysconfig
#
# Use this one to change default values for all services
# Change the service specific ones to affect only one service
# (see, for instance, /etc/sysconfig/tomcat6)
#
...
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
    
por 21.09.2011 / 06:03
2

A maneira mais elegante que encontrei até agora é editar o /etc/init.d/tomcat6 e adicionar isso no topo do arquivo:

# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m

As outras opções que descrevi na minha pergunta não parecem funcionar. Depois de estudar o script e experimentar um pouco mais, agora duvido que /usr/share/tomcat6/bin/catalina.sh e /usr/share/tomcat6/bin/startup.sh desempenhem qualquer papel na inicialização do tomcat com o pacote tomcat6 do Ubuntu. Em vez de; o /etc/init.d/tomcat6 substitui completamente qualquer trabalho que normalmente possa ser feito por catalina.sh/startup.sh.

Eu ainda estou um pouco preocupado em perder essas opções de configuração em alguma atualização de pacote futura, mas acho que se isso acontecer, seria muito fácil restaurá-las.

    
por 08.05.2010 / 02:07