在 Debian(以及其他 Linux 发行版)中,backlog 过高通常指以下几类情况之一,需要结合具体场景来看:
listen() 的 backlog)常见于:
表现:
ss -lnt 中 Recv-Q 接近 Send-QSYN Flood 或突发流量原因:
accept() 太慢(CPU、锁、阻塞 IO)backlog 设置太小(内核截断)相关参数:
# 查看
ss -lnt
# 内核最大 backlog
cat /proc/sys/net/core/somaxconn
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
解决:
# 调整
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_max_syn_backlog=65535
并在应用中增大 listen(backlog)
Debian 使用 systemd:
systemctl status 显示大量 queued 服务原因:
查看:
systemctl list-jobs
Debian 更新后:
查看:
dpkg --configure -a
apt list --upgradable
netdev_backlog(收包队列)
表现:
si)查看:
cat /proc/net/softnet_stat
调整:
sysctl -w net.core.netdev_max_backlog=65535
| 原因 | 说明 |
|---|---|
| 服务处理能力不足 | CPU / 线程数不够 |
| backlog 参数太小 | 默认 128 太小 |
| 网络攻击 | SYN Flood |
| 磁盘 IO 瓶颈 | apt / systemd 卡 |
| 应用 bug | accept 不及时 |
你可以告诉我:
ss、netstat、systemctl)cat /etc/debian_version)我可以给你具体到配置文件级别的优化方案。