我已经开始使用Socket探索Linux中的网络编程。我想知道雅虎,谷歌等网络服务器如何能够建立数百万/数十亿的连接。我相信核心只是用于访问远程服务器的套接字编程。如果是这种情况,那么亿万和数百万人如何能够连接到服务器。这意味着数十亿/百万的套接字连接。这不可能吗?该规范仅表示最多5个套接字连接。它背后的秘密是什么?
你能谈谈这个 - API吗?
listen(sock,5);
答案 0 :(得分:0)
要了解调整单个服务器的想法,您可能希望以Apache Performance Tuning和Linux Tuning Parameters开头,尽管它有些过时。另请参阅Upper limit of file descriptor in Linux
当您获得许多经过精心调整的服务器时,会使用网络平衡器,它通常会在这些主机群集中分配IP流量。除了在IP平衡器之间进一步拆分之外,有时还会使用DNS负载平衡。
在这里,如果您感兴趣,可以关注Google的计算引擎负载平衡,它提供单个IP地址,并且不再需要DNS平衡,并重现其结果:
以下说明将逐步指导您设置a 谷歌计算负载均衡器基准,达到1,000,000 每秒请求数。编写时使用的是代码和步骤 Google Cloud Platform博客的博客文章。你可以找到谷歌 云平台博客@ http://googlecloudplatform.blogspot.com/这个 GIST是Eric Hankland的指令和脚本的组合 和Anthony F. Voellm。您可以自由重用代码段。 https://gist.github.com/voellm/1370e09f7f394e3be724
答案 1 :(得分:0)
它没有'仅说最多5个连接'。你引用的listen()的参数是积压,而不是连接的总数。它指的是在应用程序通过accept()获取它们之前,TCP将接受并保留在“backlog”队列()上的传入连接数。