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

Chr*_*ris 36 ubuntu tomcat java

我正在使用 Ubuntu 9.04 中的 tomcat6 包运行 Tomcat,它使用 jsvc 从 Tomcat 中创建了一个守护进程。我想知道-Xmx为 Tomcat设置 Java 堆选项的正确方法。我想把配置放在风格最正确的地方,以及最不可能被 Ubuntu 包更新覆盖的地方。

我现在看到的选项:

  • /etc/init.d/tomcat6.
  • /usr/share/tomcat6/bin/catalina.sh.
  • 创建一行/usr/share/tomcat6/bin/startup.sh以将 CATALINA_OPTS 设置为具有所需的标志,然后将 CATALINA_OPTS 作为环境变量导出。(这看起来会被 接收catalina.sh。)

最后一个选项听起来是最好的,它在增加 Java 的堆空间在 Tomcat 启动脚本中被提倡(没有解释原因)。但我想得到第二意见。有人想确认没有更好的方法吗?

nat*_*ado 37

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

  • /etc/default/tomcat6 是正确的地方 (7认同)
  • 在 CentOS 上,我找到的位置是 /etc/tomcat6/tomcat6.conf (2认同)

小智 16

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

export JAVA_OPTS="-server -Xmx512m"
Run Code Online (Sandbox Code Playgroud)

对于 Windows,您将需要在 setenv.bat 中,类似于

set JAVA_OPTS=-server -Xmx768m
Run Code Online (Sandbox Code Playgroud)

从 tomcat 5.5 到 7 都是如此。原始回答/sf/ask/20020521/


KCD*_*KCD 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"
Run Code Online (Sandbox Code Playgroud)

  • 这对于CentOS / yum / RPM 版本的tomcat 来说似乎是正确的。对于 Ubuntu / apt-get 包, setenv.sh 是正确的方式去 AFAIK (4认同)

Chr*_*ris 2

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

# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m
Run Code Online (Sandbox Code Playgroud)

我在问题中概述的其他选项似乎不起作用。在研究了该脚本并进行了更多实验之后,我现在怀疑 /usr/share/tomcat6/bin/catalina.sh 和 /usr/share/tomcat6/bin/startup.sh 在使用 tomcat6 Ubuntu 软件包启动 tomcat 中发挥任何作用。反而; /etc/init.d/tomcat6 完全取代了通常由 catalina.sh/startup.sh 完成的任何工作。

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