Tomcat - 如何限制 Tomcat 将使用的最大内存

Posted

技术标签:

【中文标题】Tomcat - 如何限制 Tomcat 将使用的最大内存【英文标题】:Tomcat - How to limit the maximum memory Tomcat will use 【发布时间】:2011-02-13 01:36:30 【问题描述】:

我在小型 VPS (256MB/512MB) 上运行 Tomcat,我想明确限制 Tomcat 使用的内存量。

我知道我可以通过传入 java 最大堆和初始堆大小参数以某种方式进行配置;

-Xmx256m
-Xms128m

但我找不到在 Ubuntu 上的 Tomcat 6 配置中放置它的位置。

提前致谢,

Gav

【问题讨论】:

【参考方案1】:

在 Ubuntu 上,自定义 Tomcat 变量的正确方法是编辑文件

/etc/default/tomcat5.5

(或/etc/default/tomcat6,如果您正在运行更新的版本)

在该文件中,按照此处其他回复中的说明设置 JAVA_OPTS 变量, 例如

JAVA_OPTS="-Xmx512m"

将最大内存设置为 512 MB。

【讨论】:

【参考方案2】:

在您的初始化脚本中设置 JAVA_OPTS,

 export JAVA_OPTS="-Djava.awt.headless=true -server -Xms48m -Xmx1024M -XX:MaxPermSize=512m"

【讨论】:

-Djava.awt.headless=true 是做什么的? 防止异常是您有一些较旧的应用程序渲染图形java.sun.com/developer/technicalArticles/J2SE/Desktop/headless 和 -server 优化在服务器上运行? 您可以将JAVA_OPTS="-Djava.awt.headless=true -server -Xms48m -Xmx1024M -XX:MaxPermSize=512m" 放入文件CATALINA_BASE/bin/sentenv.sh 中(如果不存在则创建它)。 setenv.sh 将由 catalina.sh 获取(如果存在)。 zero0 的答案是正确的。将值放在其他地方会被 setenv.sh 中的默认值覆盖,并且不会保留。只需编辑 setenv.sh 至少对于 tarball 源安装的 tomcat,此文件存在。【参考方案3】:

您可以将其添加到bin/catalina.sh 启动脚本中的JAVA_OPTS 变量中。

JAVA_OPTS="-Xms128m -Xmx256m"

【讨论】:

如果你这样做,你的设置将在下次 Tomcat 包更新时丢失。 @youri 是正确的。这就是为什么你最好保留一个预先配置的 vanilla tomcat 服务器的独立副本,你只需为每个项目克隆它 “bin/catalina.sh”中的注释建议将环境变量更改存储在“$CATALINA_HOME/bin/setenv.sh”中。

以上是关于Tomcat - 如何限制 Tomcat 将使用的最大内存的主要内容,如果未能解决你的问题,请参考以下文章

如何使用共享的 Tomcat?

如何使用嵌入式 tomcat 在 Spring Boot 中增加文件大小上传限制

如何确定我的tomcat应用程序所需的Openshift Pod的资源限制?

怎么用Tomcat实现IP限制访问

post提交参数过多时,取消Tomcat对 post长度限制

使用daemon方式启动tomcat(CentOS7)