一、TCP连接相关核心参数
服务器的并发连接能力首先受限于TCP协议栈配置:
1. 连接队列参数(Linux系统)
查看当前队列设置
sysctl net.core.somaxconn
sysctl net.ipv4.tcp_max_syn_backlog
永久修改配置(需root权限)
echo "net.core.somaxconn=4096" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog=2048" >> /etc/sysctl.conf
sysctl -p
- somaxconn:定义已完成连接队列的最大长度(默认通常为128)
- tcp_max_syn_backlog:控制半连接队列大小(SYN_RECV状态)
2. Windows系统TCP参数
查看当前动态端口范围
netsh int ipv4 show dynamicport tcp
修改动态端口范围(管理员权限)
netsh int ipv4 set dynamicport tcp start=49152 num=16384
关键注册表项:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
下的MaxUserPort(默认5000)和TcpNumConnections
二、系统级资源限制
1. 文件描述符限制
查看当前限制
ulimit -n
永久修改(CentOS/RHEL)
echo " soft nofile 65535" >> /etc/security/limits.conf
echo " hard nofile 65535" >> /etc/security/limits.conf
2. 内存分配策略
调整内核overcommit策略
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
可选值:
0(启发式overcommit)
1(总是允许)
2(禁止超过swap+物理内存比例)
三、应用层关键配置
1. Web服务器参数示例(Nginx)
events {
worker_connections 2048; 每个worker进程的最大连接数
multi_accept on; 允许同时接受多个新连接
}
2. 数据库连接池配置(MySQL)
[mysqld]
max_connections=500
thread_cache_size=32
table_open_cache=4000
四、监控与调优建议
- 使用
ss -s
或netstat
监控连接状态 - 通过
dmesg
检查内核丢包日志 - 压力测试推荐工具:wrk/JMeter
- 建议增量调整参数并记录性能变化
专业提示:生产环境修改前务必在测试环境验证,高并发场景建议结合负载均衡方案。
评论