【问题标题】:Set Java / Tomcat heap size (Xmx) without modifying catalina.sh在不修改 catalina.sh 的情况下设置 Java / Tomcat 堆大小 (Xmx)
【发布时间】:2014-01-21 20:05:07
【问题描述】:

大多数人似乎建议通过编辑 /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 文件,而我只是在鼹鼠山上造山?

【问题讨论】:

    标签: java tomcat configuration heap-memory


    【解决方案1】:

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

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

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

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

    [我] 只是把鼹鼠山变成一座山吗?

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

    【讨论】:

    • 谢谢!我正在构建一个生产平台,其中一个配置将部署到数十个(希望有一天,数百个或更多)产品服务器,所以我想正确。我正在使用带有 Tomcat6 和 Solr 3.6.x 的 Ubuntu 12.04,仅供参考。
    • 在这种情况下,“/etc/init.d/”中应该有一个名为“tomcat”或“tomcat6”的shell脚本。查看脚本以了解它如何处理 CATALINA_OPTS。有些版本从某个地方获取“默认”脚本......这就是您放置“-xmx”设置的地方。
    • 我最终将以下内容添加到/etc/environmentJAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx256m"
    【解决方案2】:

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

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

    【讨论】:

    • 这是一个更好的方法
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-05-14
      • 2015-07-07
      • 2011-08-29
      • 2015-10-21
      • 2011-08-16
      • 2015-04-08
      • 1970-01-01
      • 2011-11-13
      • 2018-05-02
      相关资源
      最近更新 更多