在 Java 系统中,不同的常用组件/中间件的连接数(并发数)设置差异很大,取决于使用场景、驱动实现、以及系统资源(CPU、内存、网络):
1. 数据库连接池(JDBC / MyBatis / Hibernate)
-
常用组件:HikariCP、Druid、C3P0
-
默认连接数:
- HikariCP 默认
10 - Druid 默认
8
- HikariCP 默认
-
常见设置范围:
50 ~ 200(和数据库实例能承受的连接数相关) -
优化点:
maxPoolSize、minIdle要结合 QPS 及 SQL 耗时设置- 避免过大连接池(数据库端会被拖垮)
2. Redis 客户端连接
-
常用组件:Jedis、Lettuce、Redisson
-
默认连接数:
- Jedis:默认
8 - Lettuce:默认使用 Netty,多路复用,不依赖大量连接
- Redisson:默认
24(分布在不同节点)
- Jedis:默认
-
常见设置范围:
50 ~ 500 -
优化点:
- 高并发推荐 Lettuce + Netty 多路复用,减少连接数
- 配合 Redis Cluster 时,注意对不同节点均衡分配连接
3. 消息队列(RabbitMQ / Kafka)
-
RabbitMQ(AMQP 客户端):
- 默认连接数
1,但支持多个 channel(轻量级连接) - 常用设置:单个应用
1 ~ 10个连接,多个 channel 分流
- 默认连接数
-
Kafka(KafkaProducer / KafkaConsumer):
- Producer 通常
1个长连接即可(异步批量发送) - Consumer 通常和 分区数 对齐(1 个 Consumer 线程 ≈ 1 个分区)
- Producer 通常
4. HTTP 客户端连接
-
常用组件:HttpClient、OkHttp、RestTemplate (底层 PoolingHttpClientConnectionManager)
-
默认连接数:
- Apache HttpClient:默认
20总连接数,每路由2 - OkHttp:默认
5
- Apache HttpClient:默认
-
常见设置范围:
- 总连接数:
200 ~ 500 - 每个路由:
50 ~ 200
- 总连接数:
-
优化点:
-
高并发场景必须配置连接池(否则频繁 TCP/SSL 握手)
-
例如:
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(500); cm.setDefaultMaxPerRoute(100);
-
5. 线程池(并发任务执行)
-
常用组件:ThreadPoolExecutor、ForkJoinPool、CompletableFuture
-
常见配置:
- CPU 密集型:
核心线程数 = CPU核心数 + 1 - IO 密集型:
核心线程数 = CPU核心数 * 2 ~ 10 - 队列:
LinkedBlockingQueue(有界,避免 OOM)
- CPU 密集型:
6. Tomcat / Undertow / Jetty(Web 容器线程数)
-
Tomcat 默认配置:
maxThreads = 200acceptCount = 100(队列)
-
优化点:
- 高并发:
maxThreads调整到500 ~ 1000(视 CPU、JVM 配置) - 建议配合 Nginx/网关限流
- 高并发:
总结:Java 常用组件的连接数(并发数)大致参考值
| 组件 | 默认值 | 常见优化范围 |
|---|---|---|
| 数据库连接池 | 8 ~ 10 | 50 ~ 200 |
| Redis (Jedis/Lettuce) | 8 | 50 ~ 500 |
| RabbitMQ | 1 | 1 ~ 10(多 channel) |
| Kafka | 1 | 分区数对齐 |
| HttpClient | 20 | 200 ~ 500 |
| Tomcat maxThreads | 200 | 500 ~ 1000 |
172万+

被折叠的 条评论
为什么被折叠?



