服务器如何处理大量的 80 端口连接

dee*_*ee1 1 web-server port connections

诚然,这是一个简单的问题,但 20 分钟的谷歌搜索,我就是找不到答案......我将用一个例子来构建我的问题。

假设我拥有 www.reallypopular.com 并且我的网站每秒看到 100 个 GET 请求。还假设我的服务器响应该 GET 请求的平均时间是 1 秒(为了这个例子,假设一些服务器端处理。)我对端口的理解会说第一个联系我的服务器的客户端会阻塞任何其他人从连接到端口 80 1 秒。按照这个逻辑,实际上只有 1% 的用户会得到实际响应,其余用户会得到“端口繁忙”或“无响应”或一些此类错误。

显然,我遗漏了一些东西,因为这显然不是正在发生的事情,所以如果有人可以将我直接放在此处或指向我可以阅读的内容来澄清这一点,那么我不会提出我为什么会喜欢它的理论。非常感谢。

syb*_*eon 5

答案可以在这篇维基百科文章中找到:

实现公共服务的应用程序通常使用专门保留的、众所周知的端口号来接收来自客户端主机的服务请求。此过程称为侦听,涉及在知名端口上接收请求并在另一个专用端口上重新建立一对一的服务器-客户端通信,以便其他客户端也可以联系知名服务端口。

此外,来自维基百科上关于伯克利套接字的这篇文章。

当应用程序正在侦听来自其他主机的面向流的连接时,它会收到此类事件的通知(参见 select() 函数),并且必须使用 accept() 函数初始化连接。Accept()为每个连接创建一个 新的套接字并从侦听队列中删除该连接。