Linux Backlog 防崩溃实用指南
一 核心原理与风险边界
二 快速处置清单
listen 80 default_server backlog 1024;。net.core.somaxconn=4096、net.ipv4.tcp_max_syn_backlog=8192;同时提升设备层接收队列 net.core.netdev_max_backlog=16384,缓解突发流量导致的丢包与排队过长。tcp_fin_timeout=30、tcp_keepalive_time=60,加速回收失效连接,减少队列压力。net.ipv4.ip_local_port_range,并启用连接池,降低频繁建连对队列的冲击。ss -lnt 或 netstat -lnt 观察队列与监听状态,配合 Prometheus/Grafana 设置阈值告警,做到事前预防。三 关键参数与推荐范围
| 参数 | 作用 | 建议范围 | 备注 |
|---|---|---|---|
| net.core.somaxconn | 全连接队列上限 | 4096–16384 | 需与应用 backlog 匹配,过大浪费内存 |
| net.ipv4.tcp_max_syn_backlog | 半连接队列上限 | 2048–16384 | 高并发或受攻击时适当增大 |
| net.core.netdev_max_backlog | 网卡接收队列 | 16384–65536 | 应对突发流量、避免丢包 |
| net.ipv4.tcp_syncookies | 抗 SYN Flood | 1(按需) | 仅在攻击/异常时开启 |
| net.ipv4.tcp_fin_timeout | FIN-WAIT-2 回收 | 15–30 秒 | 加速释放关闭连接 |
| net.ipv4.tcp_keepalive_time | 保活探测间隔 | 60–300 秒 | 更快清理僵死连接 |
| net.ipv4.ip_local_port_range | 本地端口范围 | 1024–65535 | 提升可复用连接空间 |
四 监控与验证
ss -lnt(关注 Recv-Q 接近 Send-Q 的情况)、netstat -lnt;必要时配合 top/htop、iostat 观察 CPU、内存与 I/O 是否成为瓶颈。五 常见误区与加固建议