2008-09-16 153 views
8

在編寫自定義服務器時,有哪些最佳實踐或技巧來確定可以在任何給定時間連接到服務器的最大用戶數?計算機可以支持多少個網絡連接?

我認爲計算機硬件,網絡容量和服務器協議的功能都是重要的因素。

此外,您認爲將網絡連接數限制爲某個最大用戶數是一種很好的做法嗎?或者,服務器是否應該不限制網絡連接的數量,並讓性能下降,直到響應時間非常高?

回答

7

丹凱格爾放在一起的技術總結爲處理大量的網絡連接從一個單一的服務器,在這裏:http://www.kegel.com/c10k.html

+0

那紙看起來很舊的(1999年),並沒有真正最新的。例如,Linux下的ulimit(至少Ubuntu)被設置爲無限制......因此將其設置爲32768可能不是必需的? – 2015-04-09 18:08:37

5

一般來說,現代服務器可以處理大量的併發連接。我已經開發了超過8,000個同時打開的TCP/IP套接字的系統。

您需要一個高質量的服務界面來處理這種負載,請查看libeventlibev

0

高併發連接最大的挫折之一實際上是涉及的路由器。家庭用戶導向的路由器通常有一個小的NAT表,防止路由器實際上爲服務器提供連接。

一定要研究您的路由器/網絡基礎設施設置。

0

我認爲你不應該限制你的服務器允許的連接數 - 只要正確地捕獲和處理在接受和關閉連接時可能發生的任何異常,你應該沒問題。你應該把這種低層次的編程留給底層的操作系統層 - 這樣你可以更容易地移植你的服務器等。

0

這真的取決於你的操作系統。

不同的Unix版本將支持文件句柄的「無限」數量/插槽等都有類似32768

典型的用戶限制爲8192個高值,但它通常可以設置得更高。

我認爲Windows更有限制,但服務器版本可能有更高的限制。

4

這是一個很好的問題,它絕對是情境。你的電腦是什麼?您是否有裝有四核至強,128 GB內存和光纖通道連接(如我們剛買的Dell R900)的4插槽機器?或者,您是否正在使用256 MB RAM和56K調制解調器的p3 550上運行?每個連接在您的服務器上的負載是多少?什麼樣的反應是可以接受的?

這些是您需要回答的問題。我想通過負載測試找到答案的最佳途徑。針對您的服務器創建代碼將執行的預期(也可能是某些意外)路徑的單元測試。找到一個負載測試框架,可以讓您模擬10,100,1000,10000個用戶同時執行這些任務。

這將告訴您您的計算機可以支持多少個連接。

有關加載/單元測試場景的好處是,您可以在單元測試中放入響應時間預期,並增加負載直至超出響應時間。如果您需要支持X號用戶使用Y第二個響應,您將能夠在負載測試中演示它。

相關問題