如何查看linux的半连接队列,全连接队列
全连接队列大小和半连接队列大小如何设置?
全连接大小:全连接队列大小取决于backlog 和somaxconn 的最小值,也就是 min(backlog,somaxconn)
- somaxconn 是Linux内核参数,默认128,可通过/proc/sys/net/core/somaxconn进行配置
- backlog是 listen(int sockfd,int backlog)函数中的参数backlog
半连接队列大小:通过/proc/sys/net/ipv4/tcp_max_syn_backlog来设置
如何查看当前全连接队列和半连接队列的大小?
#查看半连接队列
[root@server ~] netstat -natp | grep SYN_RECV | wc -l
233 #表示半连接状态的TCP连接有233个
#查看全连接队列
[root@server ~]# ss -lnt |grep 6080
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 :::6080 :::*
- # -l 显示正在Listener 的socket
- # -n 不解析服务名称
- # -t 只显示tcp
- # Recv-Q 完成三次握手并等待服务端 accept() 的 TCP 全连接总数,
- # Send-Q 全连接队列大小
如何查看全连接半连接溢出?
netstat -s|egrep "SYNs to LISTEN" 直接查看半链接队列是否有溢出,数字一直变大就是有溢出
netstat -s|grep overflowed 直接查看全链接队列是否有溢出,数字一直变大就是有溢出
[root@server ~] netstat -s | egrep "listen|LISTEN"
7102 SYNs to LISTEN sockets ignored 表示半连接队列溢出次数
7102 times the listen queue of a socket overflowed 全连接队列溢出的次数
全连接半连接溢出后如何处理?
当全连接队列已满就会根据tcp_abort_on_overflow策略进行处理。Linux 可通过 /proc/sys/net/ipv4/tcp_abort_on_overflow 进行配置。
- 当tcp_abort_on_overflow=0,服务accept 队列满了,客户端发来ack,服务端直接丢弃该ACK,此时服务端处于【syn_rcvd】的状态,客户端处于【established】的状态。在该状态下会有一个定时器重传服务端 SYN/ACK 给客户端(不超过 /proc/sys/net/ipv4/tcp_synack_retries 指定的次数,Linux下默认5)。超过后,服务器不在重传,后续也不会有任何动作。如果此时客户端发送数据过来,服务端会返回RST。(这也就是我们的异常原因了)
- 当tcp_abort_on_overflow=1,服务端accept队列满了,客户端发来ack,服务端直接返回RST通知client,表示废掉这个握手过程和这个连接,client会报connection reset by peer。
如果半连接队列满了,并且没有开启 tcp_syncookies,则会丢弃;
net.ipv4.tcp_syncookies = 1
表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
tcp_syncookies是一个开关,是否打开SYN Cookie功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN的重试次数。
connection time out
)错误。但是,当Server端开启了syncookies=1,那么SYN半连接队列就没有逻辑上的最大值了,并且/proc/sys/net/ipv4/tcp_max_syn_backlog设置的值也会被忽略。__EOF__
作 者:枯木逢春
出 处:https://www.cnblogs.com/kumufengchun/p/15893977.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix