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 在 Spring Boot 中增加文件大小上传限制
如何确定我的tomcat应用程序所需的Openshift Pod的资源限制?