全连接队列


「全连接队列」包含了服务端所有完成了三次握手,但是还未被应用调用 accept 取走的连接队列

你可以把这个过程想象生产者、消费者模型。内核是一个负责三次握手的生产者,握手完的连接会放入一个队列。我们的应用程序是一个消费者,


取走队列中的连接进行下一步的处理。这种生产者消费者的模式,在生产过快、消费过慢的情况下就会出现队列积压。



处于 LISTEN 状态的 socket,Recv-Q 对应 sk_ack_backlog,

表示当前 socket 的完成三次握手等待用户进程 accept 的连接个数,


Send-Q 对应 sk_max_ack_backlog,表示当前 socket 全连接队列能最大容纳的连接数


node1:/root#ss -lnt  | grep 8081
LISTEN     6      5             192.168.137.2:8081                     *:*   



服务端脚本:

node1:/root/test#cat p2.py 
# coding = utf-8
# -*- coding:utf-8 -*-
import socket
import time
BUFSIZE=1024
ip_port = ('192.168.137.2',8081)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建套接字
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(ip_port)#绑定地址
s.listen(5)
time.sleep(10000)


ss -lnt | grep :9090
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN     51     50           *:9090                     *:*
对于 LISTEN 状态的套接字,Recv-Q 表示 accept 队列排队的连接个数,

Send-Q 表示全连接队列(也就是 accept 队列)的总大小。
发布了3883 篇原创文章 · 获赞 120 · 访问量 360万+

猜你喜欢

转载自blog.csdn.net/zhaoyangjian724/article/details/105209371
今日推荐