2

我在 Linux 机器上拥有超过 300 万个文件描述符,因此我查看了套接字缓冲区大小与 RAM 大小的关系如何限制机器可以处理的同时 tcp 连接的最大数量。有类似经历的请指教。谢谢你。

4

2 回答 2

1

这与 RAM 大小无关,而与虚拟内存大小有关。显然,您的缓冲区不能超过计算机上可用的总虚拟内存。也就是说,如果您发现当您打开 300 万个套接字时事情开始出现问题,您可能最好集中精力减少套接字数量,而不是减少缓冲区大小——300 万个套接字是很多,并且可能暗示您的架构存在其他一些问题。

于 2013-08-03T11:24:17.027 回答
0

假设 Linux 默认发送和接收缓冲区大小与几年前一样:

3,000,000 x 43,689 + 3,000,000 x 16384 = 180,219,000,000
    = 175,995,117 Kb
    = 171870 Mb
    = 167 Gb

这确实相当多。除非你真的有这么多的虚拟内存和可用的地址空间,否则你不会达到 300 万个打开的套接字。

于 2013-08-05T23:53:52.453 回答