2011-11-27 63 views
1

雙絞服務器支持超過10,000個併發連接。我想編寫一個測試用例來使用Python進行檢查。我知道的只是使用多處理+線程+ greenlet。我的問題是如何確認Twisted支持超過10,000個併發連接?如何計算和測試併發連接的數量?

我知道的東西是使用記錄器,但記錄器準確嗎?或者有其他方法來計算它?

回答

1

NicholasPiël的併發性基準測試非常有趣,包括Python中Twisted和其他框架的比較。他還提到如何使用十幾萬個套接字句柄進行測試。

關於這個問題的另一個好讀是The C10K problem,雖然它並不僅僅適用於Python的。

通過應用Nicholas使用的技巧,您將能夠驗證他的發現,並確定Twisted將爲您達到的併發性能級別。

+0

雖然我很欣賞Nicholas在這個問題上所付出的努力,但基準測試實際上存在很多缺陷,而且由於請求工作負載的原因,基準測試既不現實也不實際併發(特別是在「異步服務器」之一中)。這些請求是*同時發佈的,但是它們是連續處理的。 – Glyph

4

很容易支持超過10,000個併發連接。有什麼可以更難的是支持這麼多的活動的連接。您期望在連接上找到的活動類型更有可能確定您可以一次支持多少個活動。你期望這些連接做什麼?構建反映真實世界行爲的測試,然後查看您可以支持多少個客戶端。您的測試越準確地反映真實世界的行爲,您的結果就越準確。

+1

+1,這是非常真實的。我被套接字數量的瓶頸所限制,而不是socket_activity_。有插座不斷喚醒是非常昂貴的。 –