CentOS 中 backlog 的含义与清理思路
在 CentOS 里,backlog 通常指两类“队列”:一是网络层面的 TCP 监听套接字未完成连接队列(由内核参数如 net.core.somaxconn、net.ipv4.tcp_max_syn_backlog 约束);二是应用/系统层面的 任务或消息积压(如 systemd 服务任务、邮件队列等)。不同对象“清理”的方式不同,网络队列无法单独“清空”,只能让其自然耗尽或通过重启相关服务重建;任务队列则可按队列类型清理。
网络 backlog 的处理
查看当前监听与队列情况
使用 ss -lnt 或 netstat -lnt 查看各监听端口的队列状态(Recv-Q 常用来观察当前排队情况)。这有助于确认是否真的存在积压以及发生在哪些服务上。
让队列自然耗尽或重建
对已建立的连接,内核会在超时后自动清理;若队列已满且新连接被拒,通常做法是“重启承载该监听的服务”(例如重启 nginx、sshd、mysqld 等),以重建监听套接字并清空队列。注意:重启会短暂中断服务,需在维护窗口进行。
临时扩容队列上限(治标)
在问题排查期间,可临时提高内核队列上限以缓解被拒连接:
排查与预防要点
使用 ss/netstat、tcpdump 等定位是哪些服务/端口积压;优化应用并发(异步 I/O、线程池、连接复用);必要时通过 iptables 等做速率/连接数限制,避免异常流量压垮队列。
应用与系统任务 backlog 的清理
systemd 服务任务积压
查看:systemctl list-jobs;若存在卡住的任务,优先分析并结束阻塞进程,再按需执行 systemctl restart <服务名> 恢复正常调度。
at 任务队列
查看:atq;删除指定任务:atrm <任务ID>;清空全部:atrm -r(谨慎,确保不影响业务)。
Postfix 邮件队列
查看:postqueue -p;清空队列:postsuper -d ALL(仅在确认可丢弃时执行)。
日志与临时文件等常见“系统级 backlog”
日志轮转与清理:
操作建议与风险提示