即使在这个话题上说了不少,我仍然感到难过。
我试验了一个能够处理正确负载斜坡的怪物Linux服务器,大概每秒有几千个连接。现在,如果我检查默认的listen()队列:
#cat /proc/sys/net/core/somaxconn
128
根本不是实际的队列大小。我怀疑它可能是遗产,实际大小由此给出:
#cat /proc/sys/net/ipv4/tcp_max_syn_backlog
2048
但是,man tcp
表示后者是等待来自客户端的ACK的连接,这与尚未被接受的连接总数不同,这就是listen()backlog所在。
所以我的问题是如何增加 listen()backlog ,以及如何获取/设置它的上限(在内核重新编译之前)?
答案 0 :(得分:4)
您可以按照以下说明增加它:https://serverfault.com/questions/271380/how-can-i-increase-the-value-of-somaxconn - 基本上通过使用sysctl。
是的,somaxconn是监听积压的上限。
答案 1 :(得分:4)