优化CentOS上Tomcat的内存使用可从以下方面入手:
- 调整JVM内存参数
- 修改
catalina.sh,设置-Xms(初始堆大小)和-Xmx(最大堆大小),建议设置为服务器可用内存的80%,如-Xms4G -Xmx4G。 - 选择垃圾回收器,如G1(适合大内存):
-XX:+UseG1GC,或ParallelGC(适合多核):-XX:+UseParallelGC。 - 调整新生代与老年代比例:
-XX:NewRatio(默认2,可设为1~2)。
- 修改
- 优化Tomcat配置
- 调整线程池参数(
server.xml):合理设置maxThreads(最大线程数,建议100~1000)、minSpareThreads(最小空闲线程数,建议10~50),避免线程过多占用内存。 - 启用NIO协议:
protocol="org.apache.coyote.http11.Http11NioProtocol",提升I/O性能。 - 禁用不必要的功能:如关闭AJP连接器、管理界面(非必要场景)。
- 调整线程池参数(
- 系统层面优化
- 禁用透明大页:执行
echo never > /sys/kernel/mm/transparent_hugepage/enabled。 - 调整内核参数(
/etc/sysctl.conf):优化网络缓冲区、文件描述符限制等,如net.core.somaxconn=65535。
- 禁用透明大页:执行
- 监控与调优
- 使用VisualVM、JConsole等工具监控内存使用和GC行为,定位内存泄漏或异常回收问题。
- 定期分析应用代码,修复内存泄漏(如未释放的对象引用)。
注意:修改配置后需重启Tomcat生效,建议先在测试环境验证参数合理性,避免影响服务稳定性。