温馨提示×

Ubuntu Tomcat如何设置内存

小樊
39
2025-11-23 08:45:52
栏目: 智能运维

Ubuntu 下 Tomcat 内存设置指南

一 推荐做法 使用 setenv.sh 设置内存参数

  • $CATALINA_HOME/bin/ 目录下创建或编辑文件 setenv.sh(若已存在则直接修改),加入需要的内存参数。示例(请按机器内存与业务需求调整数值):
#!/bin/sh
export JAVA_OPTS="$JAVA_OPTS -Xms2g -Xmx2g"
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
export JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=200"
export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,gc+heap=debug:file=/opt/tomcat/logs/gc.log:time,tags"
  • 说明:
    • 使用 -Xms-Xmx 设置堆的初始与最大值,建议两者等值(如 2g),避免运行期扩缩堆带来的抖动。
    • 现代 JDK(8u191+ / 11+)默认使用 G1GC,可按需添加 -XX:+UseG1GC-XX:MaxGCPauseMillis 等调优参数。
    • 通过 -Xlog:gc… 输出结构化 GC 日志,便于排查与容量规划。
  • 使配置生效:
    • 重启 Tomcat:执行 $CATALINA_HOME/bin/shutdown.sh 后再执行 $CATALINA_HOME/bin/startup.sh
    • 验证是否生效:执行 $CATALINA_HOME/bin/catalina.sh run,在启动日志中能看到形如 Command line argument: -Xms2g -Xmx2g 的参数回显。

二 其他可行位置与注意事项

  • 直接编辑 $CATALINA_HOME/bin/catalina.sh,在文件靠前位置加入 JAVA_OPTS 配置(不推荐,升级时易被覆盖)。
  • 部分系统(如 Tomcat 6 的某些发行包)会在 /etc/default/tomcat6 中提供 JAVA_OPTS 配置项,可直接在该文件里设置并重启服务。
  • 避免与系统服务管理器(如 systemd)的环境变量冲突:若通过服务启动,优先在 setenv.sh 或服务的 Environment= 中设置,保持单一来源。

三 不同 JDK 版本的元空间与参数差异

  • JDK 8 及更早:使用永久代(PermGen),常见参数如 -XX:PermSize-XX:MaxPermSize(示例:-XX:PermSize=256m -XX:MaxPermSize=256m)。
  • JDK 11+:永久代已移除,使用元空间(Metaspace),应改用 -XX:MetaspaceSize-XX:MaxMetaspaceSize(示例:-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m)。
  • 若不确定 JDK 版本,可先执行 java -version 确认,再选择对应参数集。

四 系统层面优化与验证

  • 文件句柄与进程数限制:编辑 /etc/security/limits.conf,提升 nofilenproc(示例:soft nofile 65535hard nofile 65536),并重启或重新登录使其生效;随后可用 ulimit -n 验证。
  • 启动方式建议:不要用 start.sh 后台启动进行验证,改用 ./catalina.sh run 前台运行,便于在控制台直接看到 -Xms/-Xmx 等参数是否生效。

0