Web-Server

伺服器如何處理大量的 80 埠連接

  • March 31, 2019

誠然,這是一個簡單的問題,但 20 分鐘的Google搜尋,我只是找不到答案……我將用一個例子來建構我的問題。

假設我擁有 www.reallypopular.com 並且我的網站每秒看到 100 個 GET 請求。另外假設我的伺服器響應該 GET 請求的平均時間是 1 秒(為了範例,假設一些伺服器端處理。)我對埠的理解會說第一個聯繫我的伺服器的客戶端會阻塞其他任何人從連接到埠 80 1 秒。按照這個邏輯,實際上只有 1% 的使用者會真正得到響應,其餘的會得到“埠忙”或“沒有響應”或類似的錯誤。

顯然我遺漏了一些東西,因為這顯然不是正在發生的事情,所以我沒有提出我的理論,如果有人可以把我直接放在這里或者指出我可以閱讀的東西來澄清這一點,我為什麼會喜歡它。非常感謝。

答案可以在這篇維基百科文章中找到:

實現公共服務的應用程序通常使用專門保留的、眾所周知的埠號來接收來自客戶端主機的服務請求。此過程稱為偵聽,涉及在知名埠上接收請求並在另一個私有埠上重新建立一對一的伺服器-客戶端通信,以便其他客戶端也可以聯繫知名服務埠。

此外,來自維基百科上關於伯克利套接字的這篇文章。

當應用程序正在偵聽來自其他主機的面向流的連接時,它會收到此類事件的通知(參見 select() 函式),並且必須使用 accept() 函式初始化連接。Accept()為每個連接創建一個 新套接字,並從偵聽隊列中刪除該連接。

引用自:https://serverfault.com/questions/286505