首页/系统/Linux 内核与性能调优速查/listen() backlog 与应用层队列
网络栈调优98 条

listen() backlog 与应用层队列

应用 listen 的 backlog 决定内核为该监听 socket 保留的处理队列长度, 最终生效值受 somaxconn 约束。

读取生效值

读取生效值
ss -lnt | head -5
# Send-Q 列为监听 backlog; Recv-Q 为当前已建立未 accept 数
nginx 的 backlog、Node 的 server.listen(port, backlog) 等参数最终都落到该机制。

易错点

  • 认为 backlog 是绝对上限, 忽略 somaxconn 截断
  • 只调 backlog 不评估应用 accept 消费速度

数据来源与参考

  • man 2 listen
  • man 7 tcp
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌