“Linux backlog 报错”这个说法比较笼统,backlog 在不同的场景里含义不一样,常见的报错和解决方法如下,你看看你是哪一种:
nginx / redis / 自定义服务 日志出现:listen queue overflow
或TCP: request_sock_TCP: Possible SYN flooding on port xxx
listen() 的 backlog 太小somaxconn 限制# 查看
cat /proc/sys/net/core/somaxconn
# 修改(临时)
sysctl -w net.core.somaxconn=65535
# 永久
echo "net.core.somaxconn=65535" >> /etc/sysctl.conf
sysctl -p
listen 80 backlog=65535;
tcp-backlog 65535
listen(fd, 65535);
sysctl -w net.ipv4.tcp_max_syn_backlog=65535
Failed to listen on socket: Address already in use
或
socket unit backlog too small
ss -lntp | grep 端口
.socket 文件[Socket]
ListenBacklog=65535
backlog limit exceeded
(多见于 audit / printk / netlink)
# audit
auditctl -b 8192
# 内核日志
dmesg -n 1
connection refusedbacklog fullsomaxconn# 1. 看报错日志
journalctl -xe
dmesg | tail
# 2. 看监听队列
ss -lnt
# 3. 看系统限制
sysctl net.core.somaxconn
sysctl net.ipv4.tcp_max_syn_backlog
如果你能贴出具体的报错原文(命令 + 日志),我可以直接告诉你是哪一类、改哪一行。