listen()积压上限

时间:2013-08-08 09:30:36

标签: c linux tcp backlog

即使在这个话题上说了不少,我仍然感到难过。

我试验了一个能够处理正确负载斜坡的怪物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 ,以及如何获取/设置它的上限(在内核重新编译之前)?

2 个答案:

答案 0 :(得分:4)

您可以按照以下说明增加它:https://serverfault.com/questions/271380/how-can-i-increase-the-value-of-somaxconn - 基本上通过使用sysctl。

是的,somaxconn是监听积压的上限。

答案 1 :(得分:4)

somaxconn是等待的完整连接的数量。

tcp_max_syn_backlog是等待不完整连接的数量。

他们不是一回事。这些都在man page中描述。