wic*_*ick 3 c linux tcp backlog
尽管在这个话题上说了很多,但我仍然很难过。
我试验了一个能够处理适当负载斜坡的怪物 linux 服务器,大概每秒有数千个连接。现在,如果我检查默认的 listen() 队列:
#cat /proc/sys/net/core/somaxconn
128
Run Code Online (Sandbox Code Playgroud)
这根本不是实际的队列大小。我怀疑这可能是遗留问题,实际大小由以下给出:
#cat /proc/sys/net/ipv4/tcp_max_syn_backlog
2048
Run Code Online (Sandbox Code Playgroud)
但是,man tcp说后者是等待来自客户端的 ACK 的连接,这与尚未接受的连接总数不同,这就是 listen() backlog 的含义。
所以我的问题是如何增加listen() backlog,以及如何获取/设置它的上限(就在内核重新编译之前)?
您可以按照以下说明增加它:https : //serverfault.com/questions/271380/how-can-i-increase-the-value-of-somaxconn - 基本上是使用 sysctl。
是的,somaxconn 是收听积压的上限。