python socket.listen(5)的问题

各位大神好,萌新在看各类python书籍时总是能看到这句代码,理解起来也很费劲,都说一般应用传5就够用了。百度上也都是说在连接被转接或拒绝时传入连接请求的最大数,超过这个值就拒绝了。仔细揣摩过几遍,还是理解不了。像做云平台的,同时可能有上万客户端同一时刻连接进来,难道只能每次接受5个用户么?其他的拒绝连接是不给连接,需要客户端重新请求?

5个回答

你理解的没啥大问题。

这个参数指定是**等待队列**的长度。

也就是如果系统可以并发处理100个请求,同时到达106个请求,100个请求直接被处理,5个等待,第106个直接就拒绝。

上万个请求进来,系统不是每次接受5个用户,而是可以让5个用户等待,系统每次接受的用户取决于系统吞吐量。

而且一般应用传5就够了,一万个并发的应用显然也不是一般应用了

Python的没有研究过,但是在c中,指的是服务器端可建立连接的客户端的队列长度,表示服务器已经经历的两次握手等待accept 系统调用,在linux高性能服务器编程一书中提到,现在这个backlog 只是给kernel 的一个建议值,实际上是可以稍大一点。如果我没有记错的话是这么描述的

书中是这样描述上面这个例子的: 尽管这个也可以工作, 但是它不能抵御有人试图通过创建大量线程让你服务器资源枯竭而崩溃的攻击行为。

Python的没有研究过,但是在c中,指的是服务器端可建立连接的客户端的队列长度,表示服务器已经经历的两次握手等待accept 系统调用,在linux高性能服务器编程一书中提到实际上是可以稍大一点。如果我没有记错的话是这么描述的

之前因工作需要有研究过,或许对你有用:https://www.jianshu.com/p/7fde92785056

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问