在 Linux 中,“backlog” 常见于 TCP 监听队列(accept queue) 和 内核网络参数 场景。下面分情况说明如何修改。
在 socket 编程中,通过 listen() 的第二个参数指定:
listen(sockfd, backlog);
注意:
实际生效的 backlog =min(应用设置的backlog, 内核参数 somaxconn)
listen 80 backlog=1024;
tcp-backlog 511
server.xml 中 acceptCount="1024"serverBootstrap.option(ChannelOption.SO_BACKLOG, 1024)cat /proc/sys/net/core/somaxconn
sysctl -w net.core.somaxconn=1024
编辑 /etc/sysctl.conf:
net.core.somaxconn = 1024
然后执行:
sysctl -p
受 tcp_max_syn_backlog 控制:
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
永久:
net.ipv4.tcp_max_syn_backlog = 8192
由 min(somaxconn, listen backlog) 决定
ss -lnt
示例输出:
State Recv-Q Send-Q Local Address:Port
LISTEN 0 128 *:80
Send-Q:当前 accept queue 长度Recv-Q 持续增长,说明应用处理慢或 backlog 太小somaxconninitContainer 修改:sysctl -w net.core.somaxconn=1024
如果你能说明:
我可以给你更精确的修改方案。