CentOS backlog 故障排查与优化指南
一、先明确 backlog 的两种含义
二、快速定位步骤
三、常见现象与对应处理
| 现象 | 可能原因 | 快速验证 | 处理建议 |
|---|---|---|---|
| 客户端间歇性 Connection refused | 全连接队列满且 tcp_abort_on_overflow=1 或应用 accept 过慢 | ss -lnt 显示 Recv‑Q≈Send‑Q;netstat -s 中 listen queue overflowed 增长 | 提升应用 accept 并发;适度增大 net.core.somaxconn 与应用的 listen(backlog);必要时将 tcp_abort_on_overflow 设为 0 减少 RST 冲击 |
| 新连接长时间挂起后超时 | 半连接队列满(SYN 洪泛或 accept 过慢) | netstat -s 中 “SYNs to LISTEN sockets dropped” 增长;tcpdump 见大量 SYN | 开启/调高 net.ipv4.tcp_syncookies;增大 net.ipv4.tcp_max_syn_backlog;优化应用 accept 与握手后首包处理 |
| 服务器响应变慢甚至卡死,控制台报 “audit: backlog limit exceeded” | 审计事件突发,audit 缓冲不足 | dmesg/auditctl -s 显示 backlog 超限 | 临时增大 auditctl -b;审计规则收敛(减少 -a/-w 规则);必要时调高内核审计缓冲上限并评估持久化配置 |
四、参数调整与验证示例
五、容量规划与注意事项