设置Java / Tomcat堆大小(Xmx)而不修改catalina.sh

时间:2014-01-04 01:38:35

标签: java tomcat configuration heap

大多数人似乎建议通过编辑/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 playbook来在Ubuntu上配置基于Tomcat的服务器,而且我觉得整个自定义catalina.sh文件都不是理想的 - 是否有其他配置文件或本地Tomcat和/或Java用来获取XmsXmx值的设置文件/系统?

或者......大多数人都使用自定义的catalina.sh文件,而我只是在一个小山丘上建造一座山?

3 个答案:

答案 0 :(得分:5)

Tomcat从bin目录中读取setenv.sh以获取这些额外设置。 setenv.sh没有tomcat,但你可以为你创建一个并在其中设置CATALINA_OPTS。

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

答案 1 :(得分:1)

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

  • 按照建议修改(“hack”!)脚本。

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

后者可能“更干净”,但没有简单的,一刀切的方式来获得变量集和导出。如果您将Tomcat作为服务启动,则取决于您的发行版如何包装Tomcat。

  

[我是]只是在一个小山丘上建造一座山?

这取决于。如果您只是在非生产平台上执行此操作,那么是。如果您正在尝试构建一个生产系统,该系统将继续在您的发行版中进行包升级和升级,那么请注意(在后一种情况下,值得找出最佳方法为您的特定发行版。)

答案 2 :(得分:0)

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

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

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