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


36

我正在使用来自Ubuntu 9.04的tomcat6软件包运行Tomcat,该软件包使用jsvc从Tomcat中生成了一个守护进程。我想知道设置Java堆选项(例如-XmxTomcat)的正确方法。我想将配置放在样式上最正确的地方,以及最不可能被Ubuntu软件包更新覆盖的地方。

我现在看到的选项:

  • 将它们硬编码在中的某个位置/etc/init.d/tomcat6
  • 将它们硬编码在中的某个位置/usr/share/tomcat6/bin/catalina.sh
  • 在其中创建一行/usr/share/tomcat6/bin/startup.sh以将CATALINA_OPTS设置为具有所需的标志,然后将CATALINA_OPTS导出为环境变量。(看起来它会被拾取catalina.sh)。

最后一个选项听起来是最好的,它在Tomcat启动脚本中提倡(不解释为什么)增加Java的堆空间。但是我想征求第二意见。任何人都想确认没有更好的方法吗?

Answers:


37

至少在Ubuntu 10.04上,/ etc / init.d / tomcat6源/ etc / default / tomcat6(如果存在)。这就是我放置替代项的地方,并且我相信通常这是进行此类更改的“批准”方式。


7
/ etc / default / tomcat6是正确的位置
Amala

+1配置应始终在/etc可能的情况下进行。
Marcus Downing 2013年

2
在CentOS上,我找到的位置是/etc/tomcat6/tomcat6.conf
khylo 2013年

1
在CentOS 6.4上,它/etc/tomcat6/tomcat6.conf是一个大文件,我不想在其中放置个人自定义项,因此我在中创建$CATALINA_HOME/bin/setenv.sh和获取了它/usr/sbin/tomcat6。希望这对CentOS用户有所帮助(是的,我知道最初的问题是针对Ubuntu的)。
DuffJ

@khylo是的,花了我一段时间才弄清楚。似乎在CentOS中/etc/init.d/tomcat6正在调用/ usr / sbin / tomcat6,而该目录未在调用catalina.sh,而只是直接调用了tomcat bootstrap类(与Ubuntu的/etc/init.d/tomcat6相反,正在致电catalina.sh)
Eran Medan 2014年

16

如果您在安装的bin目录中查找,将看到catalina.sh或.bat脚本。如果查看这些脚本,则会看到它们分别运行setenv.sh或setenv.bat脚本(如果存在)来设置环境变量。相关环境变量在catalina.sh/bat顶部的注释中进行了描述。要使用它们,例如,创建一个包含内容的文件$ CATALINA_HOME / bin / setenv.sh

export JAVA_OPTS="-server -Xmx512m"

对于Windows,您需要在setenv.bat中输入以下内容

set JAVA_OPTS=-server -Xmx768m

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


1
对于不带/ etc / default / include的系统,例如FreeBSD,效果很好。
vadipp

7

寻找/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"

4
这对于tomcat的CentOS / yum / RPM版本似乎是正确的。对于Ubuntu / apt-get软件包,setenv.sh是使用AFAIK的正确方法
Eran Medan

是的,KCD是正确的,因为centOS tomcat6.conf可以正常工作。通过命令ps aux |检查 grep tomcat它显示带有我设置的值的参数。
Manikandan Arunachalam 2015年

2

到目前为止,我发现的最优雅的方法是编辑/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启动中是否起任何作用。代替; /etc/init.d/tomcat6完全替代了catalina.sh/startup.sh通常可能完成的所有工作。

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


是否可以在.bashrc中为要运行Tomcat的任何用户设置(导出)?[请原谅恐怖语法]这将在Tomcat软件包等更新中保留下来。我假设init中的“运行方式”功能将为该用户启动普通shell并获取任务。另请参见howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu
David J. Liszewski 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.