在Ubuntu 9.04下为Tomcat 6设置Java堆选项(例如-Xmx)的位置?

我正在使用Ubuntu 9.04的tomcat6软件包运行Tomcat,它使用jsvc从Tomcat中取出一个守护进程。 我想知道为Tomcat设置Java堆选项(如-Xmx的正确方法。 我想把configuration放在任何风格最正确的地方,而且最不可能被Ubuntu软件包更新覆盖的地方。

我现在看到的选项:

  • 将它们硬编码到/etc/init.d/tomcat6某处。
  • 将它们硬编码到/usr/share/tomcat6/bin/catalina.sh某处。
  • /usr/share/tomcat6/bin/startup.sh创build一行,将CATALINA_OPTS设置为具有所需的标志,然后将CATALINA_OPTS作为环境variables导出。 (这看起来会被catalina.sh拾取)

最后一个选项听起来像是最好的select,并且在Tomcat启动脚本中增加了Java的heapspace ,这是主张的(没有解释为什么)。 但我想得到第二个意见。 任何人都想确认没有更好的办法?

至less在Ubuntu 10.04上,如果存在/etc/init.d/tomcat6 sources / etc / default / tomcat6。 这就是我提出的重写的地方,我相信这通常是“批准”的方式来做出这样的改变。

如果您查看安装的bin目录,您将看到catalina.sh或.bat脚本。 如果你看这些,你会看到他们分别运行一个setenv.sh或setenv.bat脚本,如果它存在的话,设置环境variables。 相关的环境variables在catalina.sh/bat顶部的注释中进行了描述。 要使用它们,例如创build一个带有内容的$ CATALINA_HOME / bin / setenv.sh文件

 export JAVA_OPTS="-server -Xmx512m" 

对于Windows,您需要在setenv.bat中使用类似的东西

 set JAVA_OPTS=-server -Xmx768m 

从tomcat 5.5到7.这是真的。原始answear https://stackoverflow.com/questions/286007/how-to-tune-tomcat-5-5-jvm-memory-settings-without-using-the-configuration-progra

find/etc/tomcat6/tomcat6.conf ,它已经准备好JAVA_OPTS,并等待你取消注释(但是只有你有它,我使用CentOS而不是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" 

目前为止,我发现的最优雅的方法是编辑/etc/init.d/tomcat6并在文件顶部添加它:

 # local config settings JAVA_OPTS="-Xms5000m -Xmx13000m 

我在我的问题中概述的其他选项似乎不工作。 在研究了脚本并进行了一些尝试之后,我现在怀疑/usr/share/tomcat6/bin/catalina.sh和/usr/share/tomcat6/bin/startup.sh在tomcat6 Ubuntu软件包的tomcat启动中扮演了什么angular色。 代替; /etc/init.d/tomcat6完全替代了catalina.sh/startup.sh通常可以完成的任何工作。

我仍然有点担心在将来的软件包更新中丢失这些configuration选项,但是我想如果发生这种情况,恢复它们会非常容易。