You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TCP连接中socket listen队列溢出与SYN包丢弃的区别是什么

TCP监听相关两项netstat统计值的差异

这两个统计项分别对应TCP三次握手过程中两个不同队列的溢出事件,核心差异如下:

  • times the listen queue of a socket overflowed
    统计的是*全连接队列(accept队列)*溢出的总次数:TCP三次握手完成后,连接会从半连接队列转移到全连接队列,等待应用程序调用accept()接口取出。如果全连接队列已满,内核会丢弃这个已经完成握手的连接,该统计项数值+1。
  • SYNs to LISTEN sockets dropped
    统计的是SYN半连接队列溢出的总次数:客户端首次发送SYN包发起连接请求时,内核会先将该请求放入SYN半连接队列,同时返回SYN+ACK给客户端。如果此时半连接队列已经被占满,内核会直接丢弃这个SYN包,不会响应,该统计项数值+1。

补充排查参考

你观测到的两个统计值都达到百万级,说明队列溢出已经非常严重,可对应调整内核参数缓解:

  • 全连接队列长度由net.core.somaxconn内核参数、应用程序listen()调用传入的backlog参数二者的最小值决定,两个参数都调大才能提升全连接队列上限
  • 半连接队列长度由net.ipv4.tcp_max_syn_backlog内核参数控制,开启net.ipv4.tcp_syncookies参数后,半连接队列满时不会直接丢弃SYN包,该统计项不会继续上涨,可作为应急优化手段

内容的提问来源于stack exchange,提问作者Toshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:15:09