tcp_max_syn_backlogs¶
Overview¶
tcp_max_syn_backlog 是 Linux 内核的一个重要网络参数,用于控制 SYN 队列(半连接队列)的最大长度。这个队列保存了那些已经收到客户端 SYN 包、但还未完成三次握手的连接请求。
当服务器面临大量并发连接请求(如 DDoS、瞬间高并发、爬虫等)时,如果 tcp_max_syn_backlog 设置过小,会导致:
- 新的连接请求被丢弃。
- 客户端出现 Connection refused 或超时。
- 服务无法及时响应。
默认值:
- 旧版 Linux(如 CentOS 6):1024
- 较新系统(支持 SYN Cookies):4096、8192 或更高
- 某些云服务器:可能为 65535
查看和配置¶
查看当前 tcp_max_syn_backlog 值¶
配置tcp_max_syn_backlog¶
- 临时调整(重启后失效)
- 永久调整(推荐)
方法 1:修改 /etc/sysctl.conf
方法 2:创建专用配置文件(推荐)
添加内容
加载配置:
验证结果¶
检查参数是否加载
查看当前半连接状态(可选)
查看监听端口的 Send-Q(全连接队列)
输出结果
Send-Q 显示的是 min(somaxconn, 应用 backlog),应与你设置的值一致。
推荐值(根据场景)¶
场景 | 推荐 tcp_max_syn_backlog |
---|---|
普通 Web 服务 | 4096 ~ 16384 |
高并发 API 服务、网关 | 32768 |
Redis / MySQL 高负载 | 65535 |
抗 DDoS / 高性能网关 | 65535 + 启用 tcp_syncookies |