CentOS backlog 分析实操指南
一、先明确 backlog 的两种含义
二、内核审计 backlog 的分析与处理
sudo auditctl -s(关注 backlog_limit、backlog、lost 等字段)。若 backlog 长期接近或等于 backlog_limit,且 lost 增长,说明审计缓冲成为瓶颈。sudo aureport --start today 查看当日审计事件汇总,按类型/用户/系统调用统计,识别异常高频规则或进程。sudo ausearch -i 对近期事件做交互式检索,结合时间窗口定位突发流量来源(例如某条规则或某进程在短时间内产生海量审计记录)。sudo auditctl -b 16384(将缓冲上限提升到 16384,建议为系统 PAGE_SIZE(通常 4096 字节) 的整数倍)。/etc/audit/audit.rules 顶部加入 -b 16384 -f 1(示例将缓冲设为 16384、失败级别设为 1),随后重启 auditd 或按系统方式重载规则。audit_rate_limit 与 audit_backlog_limit,避免日志洪泛导致审计子系统自身拥塞。三、TCP 连接队列 backlog 的分析与处理
ss -lnt 查看各监听套接字的当前状态,关注 Recv-Q(全连接队列当前排队字节数)与 Send-Q(该套接字发送队列,通常对服务端意义不大)。若 Recv-Q 长期接近套接字的队列上限,说明全连接队列存在积压。netstat -s | egrep 'listen|drop|syn' 或 ss -s 观察 TCP 层统计(如 listen 队列溢出、SYN 重传等)以辅助判断队列瓶颈与握手异常。listen(backlog) 与系统 net.core.somaxconn,并确保二者匹配;同时评估 net.ipv4.tcp_max_syn_backlog 与 tcp_abort_on_overflow 等参数,避免无谓丢包或恶化客户端体验。四、常用工具与命令速查表
| 场景 | 工具与命令 | 关键指标/动作 |
|---|---|---|
| 审计 backlog 状态 | auditctl -s |
查看 backlog_limit/backlog/lost |
| 审计事件汇总 | aureport --start today |
按类型/用户/系统调用统计,定位高频来源 |
| 审计事件检索 | ausearch -i |
交互式检索并还原事件上下文 |
| 审计缓冲扩容 | auditctl -b 16384 |
临时将缓冲提升到 16384 |
| 持久化配置 | /etc/audit/audit.rules 中加入 -b 16384 -f 1 |
重启 auditd 后永久生效 |
| TCP 队列观测 | ss -lnt、ss -s、netstat -s |
关注 Recv-Q 接近上限、溢出/重传统计 |
| TCP 队列深度探测 | SystemTap 脚本 | 输出队列长度、溢出与重传细节 |
上述工具与命令覆盖了审计与 TCP 两类 backlog 的分析、定位与优化路径,可据此建立日常巡检与容量规划基线。