CentOS backlog 清理与治理最佳实践
一 概念与定位
二 快速排查与定位
ss -lnt | egrep '(:80|:443|:<你的端口>)'(关注 Recv-Q 接近 Send-Q 时,accept 队列可能趋满)。ss -s 或 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}',重点留意 SYN-RECV(半连接堆积)与 TIME_WAIT(过多会占用端口与资源)。cat /proc/sys/net/core/somaxconn(全连接队列上限),cat /proc/sys/net/ipv4/tcp_max_syn_backlog(半连接队列上限)。atq;清理指定任务:atrm <ID>;清空全部:atrm -r(谨慎,可能中断计划任务)。crontab -l;必要时优化任务频率与并发,避免堆积。三 安全清理与临时缓解
systemctl restart network(或对应网络服务)。iptables -F && iptables -X(生产慎用)。atq 确认,再用 atrm 精准删除关键堆积任务,避免 atrm -r 误删。四 参数优化与持久化
net.core.somaxconn = 4096(或更高,视应用 listen(backlog) 与并发而定)。net.ipv4.tcp_max_syn_backlog = 8192(应对突发握手洪峰)。net.ipv4.tcp_syncookies = 1(队列溢出时保护服务可用性)。net.ipv4.ip_local_port_range = 1024 65535net.ipv4.tcp_tw_reuse = 1(客户端或 NAT 场景更适用)net.ipv4.tcp_tw_recycle 在 Linux 4.12+ 已移除,且多租户/NAT 场景易引发问题,不建议依赖。net.ipv4.tcp_fin_timeout = 30sysctl -p 或 sysctl --system 使配置生效。listen(backlog) 参数与 somaxconn 匹配(通常应用 backlog ≤ somaxconn)。五 预防与日常运维
somaxconn、tcp_max_syn_backlog、应用并发与超时参数,避免上线后被动“清队列”。netstat 与业务日志定位瓶颈。