centos如何提升tomcat性能
导读:CentOS 上提升 Tomcat 性能的系统化调优指南 一 操作系统层优化 文件描述符限制 提升进程可打开文件数,编辑 /etc/security/limits.conf: 示例:* soft nofile 65536、* hard...
CentOS 上提升 Tomcat 性能的系统化调优指南
一 操作系统层优化
- 文件描述符限制
- 提升进程可打开文件数,编辑 /etc/security/limits.conf:
- 示例:
* soft nofile 65536、* hard nofile 65536
- 示例:
- 在 systemd 管理的服务中,还需在 unit 文件里设置 LimitNOFILE=65536,否则 systemd 可能覆盖 limits.conf。
- 提升进程可打开文件数,编辑 /etc/security/limits.conf:
- 内核网络参数
- 编辑 /etc/sysctl.conf,提高连接队列与复用能力(示例值,按业务与内核版本调优):
net.core.somaxconn = 65535net.ipv4.tcp_tw_reuse = 1- 仅在 Linux 内核 <
4.12 的 NAT/负载均衡场景谨慎启用
net.ipv4.tcp_tw_recycle = 1,新内核不建议开启,避免连接异常。 fs.file-max = 65536
- 执行
sysctl -p使配置生效。
- 编辑 /etc/sysctl.conf,提高连接队列与复用能力(示例值,按业务与内核版本调优):
- 透明大页(THP)
- THP 可能导致 GC 停顿与内存碎片,建议禁用:
- 临时:
echo never > /sys/kernel/mm/transparent_hugepage/enabled - 永久:在 /etc/rc.local 或 systemd 服务中执行同样命令,确保开机生效。
- 临时:
- THP 可能导致 GC 停顿与内存碎片,建议禁用:
- 资源与网络
- 确保充足的 CPU/内存/磁盘 IOPS;静态资源使用 Nginx/CDN 做反向代理与缓存,减轻 Tomcat 负载。
二 JVM 层优化
- 堆与元空间
- 将 -Xms 与 -Xmx 设为相同,避免运行期扩缩堆带来的抖动;例如:
-Xms4g -Xmx4g - Java 8+ 使用 Metaspace 替代 PermGen,优先设置
-XX:MetaspaceSize与-XX:MaxMetaspaceSize,而非已废弃的 PermSize/MaxPermSize。
- 将 -Xms 与 -Xmx 设为相同,避免运行期扩缩堆带来的抖动;例如:
- 垃圾回收器
- 大堆与低延迟优先选用 G1 GC:
-XX:+UseG1GC - 吞吐优先可考虑 Parallel GC:
-XX:+UseParallelGC
- 大堆与低延迟优先选用 G1 GC:
- 代际与线程
- 结合吞吐与停顿目标调节年轻代,例如
-Xmn2g或使用-XX:NewRatio=2 - 并行 GC 线程数可按 CPU 核数设置:
-XX:ParallelGCThreads=8
- 结合吞吐与停顿目标调节年轻代,例如
- 放置位置与验证
- 在 $CATALINA_HOME/bin/catalina.sh 中设置
JAVA_OPTS或CATALINA_OPTS - 验证:
jps获取进程号,jmap -heap < pid>查看堆与 GC 配置是否生效。
- 在 $CATALINA_HOME/bin/catalina.sh 中设置
三 Tomcat 连接器与线程池
- 使用 NIO/NIO2 或 HTTP/2
- HTTP/1.1 推荐 NIO:protocol=
org.apache.coyote.http11.Http11NioProtocol - 支持 HTTP/2 时可用:
org.apache.coyote.http2.Http2Protocol(需 TLS)
- HTTP/1.1 推荐 NIO:protocol=
- 线程池与队列
- 推荐定义共享 Executor,让多个 Connector 复用线程池:
< Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" maxQueueSize="100"/> < Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"/>
- 推荐定义共享 Executor,让多个 Connector 复用线程池:
- 关键参数说明
maxThreads:最大工作线程数(并发处理能力上限)minSpareThreads:最小空闲线程,快速响应突发acceptCount:当线程耗尽时排队的最大连接数maxConnections:Tomcat 能接受的最大连接数(含排队与处理中)connectionTimeout:连接超时,常用 20000 ms
- 功能开关
- 关闭 DNS 反查:
enableLookups="false" - 启用压缩:
compression="on"、compressionMinSize="2048"、compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json"
- 关闭 DNS 反查:
四 应用与 I/O 层优化
- 静态资源与缓存
- 由 Nginx/CDN 提供静态资源,开启强缓存(Cache-Control/ETag),减少 Tomcat 磁盘与 CPU 消耗。
- 会话与对象
- 合理设置 session 超时,避免会话膨胀;尽量使用 无状态 服务与 外部会话存储(如 Redis)。
- APR/Tomcat Native
- 安装 APR 与 Tomcat Native 可利用内核 sendfile/epoll 提升 I/O 性能(需编译安装与库路径配置)。
- 安全与噪声
- 关闭目录浏览、隐藏 Server 版本信息,减少攻击面与日志噪声。
五 压测与监控闭环
- 基准测试
- 使用 JMeter 进行吞吐、并发、错误率与 P95/P99 时延压测;先小流量基线,再逐步加压到目标峰值。
- 运行时观测
- Tomcat 自带状态页:http://127.0.0.1:8080/manager/status(需配置具有 manager-gui 角色的用户)
- JVM 诊断:
jps、jmap -heap < pid>、jstat -gc < pid>、jstack < pid>定位 GC、线程与内存瓶颈。
- 调优顺序建议
- 先定目标(并发、时延、错误率)→ 做基线压测 → 调整 OS 参数 → 调整 JVM → 调整 Connector/线程池 → 引入 缓存/CDN/APR → 回归压测与 A/B 对比,确保收益稳定。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos如何提升tomcat性能
本文地址: https://pptw.com/jishu/776793.html
