在不修改 catalina.sh 的情况下设置 Java / Tomcat 堆大小 (Xmx)



大多数人似乎建议通过编辑/usr/share/tomcat6/bin/catalina.sh 文件并添加以下内容来为 Tomcat6 设置 Java/Tomcat 堆内存大小:

# Set specific memory requirements for Tomcat6 (for server with ~512MB RAM).
CATALINA_OPTS="$CATALINA_OPTS -server -Xms128m -Xmx256m"

我正在尝试构建一个 Ansible 剧本来在 Ubuntu 上配置基于 Tomcat 的服务器,在我看来,拥有一个完整的自定义 catalina.sh 文件并不理想——是否有其他配置文件或本地设置文件/系统被 Tomcat 和/或 Java 用来获取XmsXmx值?

或者......大多数人使用自定义 catalina.sh 文件,而我只是在用鼹鼠山做一座山?

Tomcat 从 bin 目录中读取这些额外设置的setenv.shsetenv.sh tomcat 不附带,但您可以为您创建一个并设置CATALINA_OPTS。

Tomcat 不建议使用 JAVA_OPTS 来设置内存,因为它适用于启动和关闭。

如果您通过"catalina.sh"脚本(直接或间接)启动,那么您有两个选择:

  • 按照建议修改("破解"!)脚本。

  • 查找调用脚本的位置,并确保CATALINA_OPTS设置为包含"-mx"选项...并出口...

后者可能"更干净",但没有简单的、一刀切的方法来设置和导出该变量。 如果您将Tomcat作为服务启动,这取决于您的发行版如何包装Tomcat。

[我]只是用鼹鼠山造一座山吗?

这要看情况。 如果您只是在非生产平台上执行此操作,那么是的。 如果您正在尝试构建一个生产系统,该系统将继续在发行版中处理软件包升级和升级,则"否"。 (在后一种情况下,值得找出为您的特定发行版执行此操作的最佳方法。

为了清楚起见:我在 tomcat/bin 中的 setenv.sh 脚本中使用了它。我可以验证它是否适用于 Ansible 或我自己的安装脚本:

CATALINA_OPTS="$CATALINA_OPTS -server -Xms512m -Xmx2048m" 

请注意,这适用于Tomcat 8,但也应该适用于Tomcat 7。

最新更新