3

尽管关于这个话题说了很多,但我仍然很难过。

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

4

2 回答 2

6

somaxconn是等待的完整连接数。

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

他们不是一回事。这一切都在手册页中描述。

于 2013-08-09T04:21:57.910 回答
5

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

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

于 2013-08-08T12:50:57.003 回答