Ubuntu Tomcat内存配置方法
导读:Ubuntu 下 Tomcat 内存配置方法 一 配置方式与优先级 使用包管理器安装的 Tomcat(如 Tomcat 6/7/8/9 的 Ubuntu 官方包)推荐在 /etc/default/tomcatX(X 为版本号)中设置 JA...
Ubuntu 下 Tomcat 内存配置方法
一 配置方式与优先级
- 使用包管理器安装的 Tomcat(如 Tomcat 6/7/8/9 的 Ubuntu 官方包)推荐在 /etc/default/tomcatX(X 为版本号)中设置 JAVA_OPTS,该文件会在服务启动脚本中被加载,升级时更不易被覆盖。直接修改 catalina.sh 不推荐,因为升级可能覆盖自定义内容。对于二进制包安装,推荐在 $CATALINA_HOME/bin/setenv.sh 中设置(该脚本会被 catalina.sh 自动加载,如不存在可新建)。若使用 systemd 服务,也可在单元文件或 /etc/profile.d/ 中导出变量,但需注意 systemd 默认不会读取用户环境,建议在单元文件里显式声明。以上做法能避免直接改动 catalina.sh 带来的维护风险。
二 具体配置步骤
-
包管理器安装(Tomcat 6/7/8/9)
- 编辑配置文件 sudo nano /etc/default/tomcat9
- 在文件中添加或修改(示例为 1GB 堆) JAVA_OPTS=“-Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:+UseG1GC”
- 重启服务 sudo systemctl restart tomcat9
- 验证 sudo systemctl status tomcat9 或查看日志 /var/log/tomcat9/catalina.out。
-
二进制包安装(apache-tomcat-*.tar.gz)
- 在 Tomcat 的 bin 目录创建或编辑 setenv.sh nano /opt/tomcat/bin/setenv.sh
- 写入(示例为 2GB 堆) #!/bin/sh export CATALINA_OPTS=“$CATALINA_OPTS -Xms2048m -Xmx2048m -XX:+UseG1GC”
- 赋权并启动 chmod +x /opt/tomcat/bin/setenv.sh /opt/tomcat/bin/startup.sh
- 前台运行验证参数 /opt/tomcat/bin/catalina.sh run(日志中可见 -Xms/-Xmx 等命令行参数)
-
使用 systemd 服务文件
- 编辑或创建 /etc/systemd/system/tomcat.service,在 [Service] 中显式声明内存 Environment=“JAVA_OPTS=-Xms1024m -Xmx2048m -XX:+UseG1GC”
- 重新加载并重启 sudo systemctl daemon-reload sudo systemctl restart tomcat 说明:也可在 /etc/profile.d/tomcat.sh 中导出变量,但 systemd 服务默认不继承,需确保单元文件内已设置或通过 EnvironmentFile 引入。
三 常用内存与GC参数建议
- 堆大小:将 -Xms 与 -Xmx 设为相同值以避免运行期扩缩堆带来的抖动;一般将 -Xmx 设为物理内存的约 1/2(需为应用与其他进程预留系统内存)。例如 2GB 内存的实例可用 -Xms1536m -Xmx1536m,1GB 实例可用 -Xms512m -Xmx512m。
- 垃圾回收器:JDK 8 可用 -XX:+UseG1GC 提升大堆与长生命周期应用稳定性;JDK 11/17(LTS)默认通常为 G1,可按需显式指定。
- 元空间(Metaspace):JDK 8+ 使用 -XX:MetaspaceSize 与 -XX:MaxMetaspaceSize 替代已废弃的 -XX:PermSize/MaxPermSize。
- 编码与平台:建议设置 -Dfile.encoding=UTF-8;如为服务器环境可加 -Djava.awt.headless=true。
四 验证与常见问题
- 验证参数是否生效
- 查看进程命令行:ps -ef | grep tomcat(应能看到 -Xms/-Xmx 等)
- 查看启动日志:grep -E “Command line argument” /opt/tomcat/logs/catalina.out(前台 catalina.sh run 时最直观)
- 使用 JMX 或 VisualVM 远程监控堆与 GC 状态(需开启 JMX 并开放端口)。
- 常见问题与处理
- 包安装修改了 catalina.sh 后升级被覆盖:改用 /etc/default/tomcatX 或 setenv.sh。
- systemd 启动未生效:在单元文件 [Service] 中显式设置 Environment=JAVA_OPTS=…,或改用 EnvironmentFile 引入变量文件。
- 内存不足或 OOM:适当增大 -Xmx,并检查应用是否存在内存泄漏;必要时开启 GC 日志分析停顿与回收效率。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Tomcat内存配置方法
本文地址: https://pptw.com/jishu/771605.html
