在Ubuntu上优化Tomcat性能可从以下方面入手:
一、Tomcat配置优化
- 线程池调整:在
conf/server.xml中配置Executor,设置maxThreads(建议500-800,根据CPU核心数调整)、minSpareThreads(建议50-100)、acceptCount(建议与maxThreads相近)。 - 连接器优化:使用NIO或NIO2协议(
protocol="org.apache.coyote.http11.Http11Nio2Protocol"),启用HTTP/2(Tomcat 8.5+)以提升并发能力。 - 禁用不必要功能:关闭DNS查询(
enableLookups="false"),启用压缩(compression="on")减少传输数据量。
二、JVM调优
- 内存设置:在
catalina.sh中配置JAVA_OPTS,设置-Xms(初始堆)和-Xmx(最大堆)为物理内存的一半,如-Xms2048m -Xmx4096m,并指定元空间大小(Java 8+用-XX:MetaspaceSize)。 - 垃圾回收器选择:推荐使用G1GC(
-XX:+UseG1GC),适合大内存应用。
三、Linux系统优化
- 内核参数调整:
- 增加TCP缓冲区:
sudo sysctl -w net.core.rmem_max=1310720(需写入/etc/sysctl.conf永久生效)。 - 调整文件描述符限制:修改
/etc/security/limits.conf,设置* soft nofile 65535。
- 增加TCP缓冲区:
- 静态资源处理:将静态文件(图片、CSS等)托管到Nginx等Web服务器,减轻Tomcat压力。
四、监控与调优工具
- 实时监控:使用JConsole或VisualVM查看线程、内存使用情况,分析GC日志(
-XX:+PrintGCDetails)。 - 压力测试:通过Apache JMeter模拟高并发场景,验证优化效果。
五、其他建议
- 启用缓存:对静态资源启用浏览器缓存,或使用CDN分发。
- 异步处理:将耗时任务(如日志记录、消息推送)异步化,避免阻塞Tomcat线程。
注意:优化后需在测试环境验证稳定性,避免参数设置不当导致服务异常。
参考来源: