优化Ubuntu Tomcat内存使用可从以下方面入手:
调整JVM内存参数
在catalina.sh中设置JAVA_OPTS,合理配置堆内存(-Xms和-Xmx,建议设为物理内存的50%-80%)、非堆内存(-XX:MetaspaceSize和-XX:MaxMetaspaceSize,Java 8+)及垃圾回收器(如-XX:+UseG1GC)。
export JAVA_OPTS="-Xms2g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
优化线程池配置
在conf/server.xml中调整Connector参数:
maxThreads:根据CPU核心数和负载设置(建议50-500,高并发场景可更高)。minSpareThreads:保持少量空闲线程(建议10-50)。acceptCount:设置请求队列长度(建议与maxThreads相近)。<Connector port="8080" protocol="HTTP/1.1" maxThreads="200" minSpareThreads="50" acceptCount="100" />
启用高效连接器与协议
使用NIO或NIO2连接器(默认),并启用HTTP/2协议以减少连接开销。
监控与调优
jconsole、VisualVM等工具监控内存使用和GC情况,调整参数避免频繁GC。操作系统级优化
调整文件描述符限制(ulimit -n)和内核参数(如net.core.somaxconn),支持更高并发连接。
注意:修改配置后需重启Tomcat,并通过压力测试验证效果,避免配置不当导致服务异常。