在 Linux 网络编程和系统管理中,backlog 最常见的含义是指 TCP 监听 socket 的等待队列长度参数(如 listen(sockfd, backlog)),此外也常用于描述系统中“待处理任务”的缓冲概念。下面从多个角度说明它的作用。
在 TCP 三次握手过程中:
accept() 的客户端backlog 历史上用于控制全连接队列大小(不同内核版本有差异)。
当瞬时大量连接请求到来时:
实际生效大小受以下参数影响(Linux):
/proc/sys/net/core/somaxconn
/proc/sys/net/ipv4/tcp_max_syn_backlog
例如:
listen(fd, 128);
实际队列可能受 somaxconn=4096 限制。
作用:
在短暂处理能力不足时:
128 ~ 5121024 ~ 4096somaxconn 调整示例:
sysctl -w net.core.somaxconv=4096
Linux 中 backlog 的核心作用是:在突发连接或任务压力下,为内核或应用提供有限、可控的缓冲队列,以平衡性能、稳定性和资源消耗。
如果你是想了解 具体某个场景(如 Nginx、Redis、Java、内核网络栈)中的 backlog,可以告诉我,我可以针对性讲。