Tomcat 6 堆大小 - 这是正确的吗?

Posted

技术标签:

【中文标题】Tomcat 6 堆大小 - 这是正确的吗?【英文标题】:Tomcat 6 Heap Size - Is this correct? 【发布时间】:2011-01-09 18:49:57 【问题描述】:

我在 Red Hat 机器上运行多个 tomcat,我想为每个配置单独的堆大小(某些实例使用更多内存)。

我可以在 catalina.sh 文件中输入以下内容来设置堆大小 min/max bt:

CATALINA_OPTS="-Xms64m -Xmx256m"

我需要添加“导出”吗?即导出 CATALINA_OPTS="-Xms64m -Xmx256m"

【问题讨论】:

【参考方案1】:

最佳做法是将环境变量的设置放在 bin 文件夹中名为 setenv.sh/.bat 的文件中。

catalina.sh 脚本具有调用该脚本的逻辑(如果存在)。

推荐这样做的原因是因为它使您的安装所需的环境变量设置可移植:您可以轻松地将setenv.sh复制到其他Tomcat安装,您可以将Tomcat升级到更新版本(可能会覆盖catalina.sh ) 但仍有现有的setenv.sh

关于如何在setenv.sh 中设置堆大小的示例:

export JAVA_OPTS='-Xmx784M` 

【讨论】:

请注意,CATALINA_OPTSJAVA_OPTS 更好。前者仅在实际启动 Tomcat 实例时使用。 JAVA_OPTS 还用于启动仅与 Tomcat 交互的 JVM(例如,用于将关闭消息发送到正在运行的 Tomcat 实例的 JVM 实例)。那些 JVM 通常不需要那么多内存。 哇,Joachim 非常棒 - 谢谢。我现在必须去更新我们所有的脚本 :) @mattb 你介意更新你的答案以适应 Joachim Sauer 的评论吗?【参考方案2】:

如果您将它添加到 Tomcat 安装中的任何内容,它将影响该机器上运行的所有实例。

我认为您想在单独的脚本中单独设置 JAVA_OPTS,然后每个脚本都会调用 Tomcat 的启动脚本。脚本可以设置不同的堆大小。是的,您需要导出。

【讨论】:

以上是关于Tomcat 6 堆大小 - 这是正确的吗?的主要内容,如果未能解决你的问题,请参考以下文章

多线程堆管理

如何设置一个非常大的 JVM 堆大小?

Tomcat 7 - 无法使 CATALINA_OPTS 堆大小正常工作

ES启动内存大小设置

使用嵌入式 Tomcat 启动 Spring Boot 应用程序时如何配置堆大小?

Java Tomcat 应用程序堆大小比已用堆大很多