|
|
springboot针对于2万并发连接的场景参数
## 1. Tomcat 线程配置优化
```yaml
server:
tomcat:
threads:
max: 500 # 从200调高,建议 400-800
min-spare: 50 # 从20调高,保持更多热线程
accept-count: 5000 # 从1000调高,等待队列容量
max-connections: 25000 # 新增:最大连接数,略大于2万
connection-timeout: 20000 # 连接超时20秒
```
---
## 2. 异步线程池优化
```yaml
task-executor:
core_pool_size: 100 # 从32调高
max_pool_size: 800 # 从500调高
queue_capacity: 50000 # 从10000调高
keep_alive_seconds: 120 # 从60调高
```
---
## 3. Redis 连接池优化(关键)
```yaml
spring:
redis:
lettuce:
pool:
max-active: 200 # 从50调高,2万连接建议150-300
max-idle: 100 # 从20调高
min-idle: 30 # 从5调高,保持更多空闲连接
max-wait: 5000ms # 从3000ms调高,高并发时需更长等待
timeout: 10000ms # 新增:命令超时时间
```
---
## 4. 数据库连接池优化
```yaml
hikari:
maximum-pool-size: 30 # 从10调高,建议20-50(根据数据库承受能力)
minimum-idle: 15 # 从5调高
connection-timeout: 60000 # 从30秒调高到60秒
```
---
## 5. JVM 内存配置(启动参数)
```bash
java -Xms4g -Xmx8g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:G1HeapRegionSize=16m \
-XX:+ParallelRefProcEnabled \
-XX:InitiatingHeapOccupancyPercent=45 \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/path/to/dump \
-Dnetty.eventLoopThreads=16 \
-jar your-app.jar
```
| 参数 | 2万连接推荐值 | 说明 |
|------|--------------|------|
| -Xms / -Xmx | 4G-8G | 堆内存,根据服务器配置调整 |
| -XX:MaxDirectMemorySize | 2G | Netty/Lettuce使用的堆外内存 |
---
## 6. Linux 系统层面优化
```bash
# /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
```
---
## 7. 完整优化配置对比
| 配置项 | 原值 | 2万连接推荐值 |
|--------|------|--------------|
| tomcat.threads.max | 200 | 500 |
| tomcat.accept-count | 1000 | 5000 |
| redis.max-active | 50 | 200 |
| redis.min-idle | 5 | 30 |
| hikari.maximum-pool-size | 10 | 30 |
| task-executor.core_pool_size | 32 | 100 |
| JVM 堆内存 | - | 4G-8G |
---
## ⚠️ 注意事项
1. **Redis 单机瓶颈**:2万连接建议 Redis 集群或主从架构
2. **渐进式调优**:建议通过压测逐步调整,监控 CPU、内存、GC 情况
3. **长连接优化**:如使用 WebSocket,考虑使用 Netty 或 WebFlux 响应式方案
|
|