温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

tomcat怎么调优并发

发布时间:2026-08-28 05:23:17 来源:亿速云 阅读:106 作者:小樊 栏目:系统运维

Tomcat 并发调优一般从 Connector(连接层)、线程池、JVM、操作系统、应用本身 五个层面来做。下面按“实用 + 常见生产配置”来讲。


一、Connector 选择(非常关键)

Tomcat 有两种经典 I/O 模型:

Connector 适合场景
NIO(默认) 高并发、短连接、HTTP 接口
APR/native 超高性能、老项目
BIO(已废弃) ❌ 不建议

✅ 推荐:NIO(Tomcat 8+ 默认)

<Connector port="8080"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           ... />

二、Connector 核心并发参数(重点)

1️⃣ 关键参数说明

<Connector
    port="8080"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="500"
    minSpareThreads="50"
    maxConnections="8192"
    acceptCount="200"
    connectionTimeout="20000"
    enableLookups="false"
/>

参数解释

参数 含义 建议
maxThreads 处理请求的最大线程数 300~800
minSpareThreads 最小空闲线程 50~100
maxConnections 最大连接数(NIO) 2048~10000
acceptCount 队列长度(满时排队) 100~300
connectionTimeout 连接超时(ms) 20000
enableLookups DNS 反向解析 false

三、线程池调优(Executor)

推荐方式:使用共享线程池

<Executor name="tomcatThreadPool"
          namePrefix="catalina-exec-"
          maxThreads="800"
          minSpareThreads="100"
          maxQueueSize="Integer.MAX_VALUE"/>

Connector 引用:

<Connector executor="tomcatThreadPool"
           port="8080"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxConnections="8192"
           acceptCount="200"/>

✅ 好处:

  • 线程统一管理
  • 避免突发流量打爆线程

四、JVM 调优(经常被忽略)

内存

-Xms4g
-Xmx4g
-Xmn2g

GC(推荐 G1)

-XX:+UseG1GC
-XX:MaxGCPauseMillis=200

生产完整示例

-Xms4g
-Xmx4g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/logs/heapdump.hprof

五、Linux 操作系统调优

1️⃣ 文件句柄

ulimit -n

建议:

* soft nofile 65535
* hard nofile 65535

2️⃣ TCP 参数(/etc/sysctl.conf)

net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1

六、应用层反向优化(非常重要)

1️⃣ 避免长时间阻塞

❌ 不要在请求中:

  • 大量 IO
  • 同步调用第三方
  • 大对象序列化

✅ 使用:

  • 异步接口
  • 线程池
  • MQ

2️⃣ KeepAlive(连接复用)

<Connector
    keepAliveTimeout="30000"
    maxKeepAliveRequests="100"
/>

七、常见性能参考值(经验)

场景 maxThreads
普通接口 300~500
高并发接口 600~1000
重计算 200~300

⚠️ 线程不是越多越好

线程数 ≈ CPU 核心数 × (1 + 等待时间 / 计算时间)


八、监控和压测

查看线程

jstack pid | grep "catalina-exec"

压测工具

  • wrk
  • ab
  • JMeter

九、典型生产配置示例(可直接用)

<Executor name="tomcatThreadPool"
          maxThreads="600"
          minSpareThreads="100"/>

<Connector executor="tomcatThreadPool"
           port="8080"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxConnections="8192"
           acceptCount="200"
           connectionTimeout="20000"
           enableLookups="false"/>

十、总结一句话

Tomcat 并发调优 = Connector + 线程池 + JVM + OS + 应用架构

如果你愿意,可以告诉我:

  • Tomcat 版本
  • CPU / 内存
  • QPS 目标
  • 接口类型(HTTP / API / 文件上传)

我可以直接帮你算一套 精准参数。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手