我在Linux机器上有300多万个文件描述符,所以我看看socket缓冲区大小与RAM大小的关系将限制机器可以处理的最大同时tcp连接数。如果您有类似的经历,请告知。谢谢。
答案 0 :(得分:1)
这不是关于RAM大小,而是关于虚拟内存大小。显然,您不能拥有超过计算机上可用虚拟内存总量的缓冲区。也就是说,如果你发现当你打开三百万个插槽时情况就会开始破坏,你可能最好不要专注于减少插座数量,而不是减少缓冲区大小 - 三百万个插槽是非常多,可能会提出您的架构的其他一些问题。
答案 1 :(得分: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万个开放套接字。