2009-12-01 57 views
3

我寫了一個TCP服務器實現,使用它我創建了一個作爲TCP echo服務的應用程序。如何測試TCP服務器的實現?

現在我想在

  • 方面,它可以有多少的連接處理,以測試這種回聲服務器
  • 什麼是響應時間
  • 多少內存和CPU,它使用

請你可以建議任何標準的方法/工具來測試這個回聲服務器。據我所知,TCP和echo服務器的實現都是相當標準的做法,所以我希望能找到成熟的工具來測試它。

P.S .:我可以寫我自己的測試應用程序,但我不想這樣做,因爲如果我看到一些問題,我需要確定它是我的服務器,它做錯了。我不想最終測試我的測試客戶端。

我用C#和.NET 3.5編寫了這個實現,但我相信這個問題並不重要。

回答

4

我有一個免費的工具,可以幫助你。我用它來測試用我的C++服務器框架構建的服務器。該工具可在此處獲得:http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html。它允許您以可配置的速率爲目標服務器創建一個可配置數量的連接,然後在每個連接上發送數據(再次以可配置的速率)。

如果發現使用它的最佳方式是在與服務器不同的機器上運行它(很明顯,我知道,但是......),並可能在多臺不同的機器上運行多個副本。請注意,如果您發現無法創建超過4000個連接,那麼您很可能需要調整運行客戶端的計算機上的註冊表設置MAX_USER_PORT

一旦你測試了你的TCP代碼,你可能會發現你需要測試你的服務器支持的協議。我在CodeProject(http://www.codeproject.com/KB/IP/testingsocketservers.aspx)上爲C#編寫了這種情況的測試工具。這允許你編寫一個「插件」來支持你的協議,併爲你處理協議不可知的事情(大量的連接,打破消息,以便得到分段的讀取等)。該設計是一個相當討厭的線程每連接設計和更高數量的連接,你會更好的重新實現一些使用異步設計的東西,但我有我的C++工具,所以我從來沒有去改變這個測試程序..

+0

好極了!似乎*完全*我想要的。讓我試試看...... – Hemant 2009-12-01 08:56:07

+0

我一直使用它的一個版本來測試我的服務器框架,(它運行在我的構建機器上來測試我所有的框架示例服務器),它是幾個自定義測試工具的基礎,多年來我一直爲客戶開發。讓我知道,如果你從博客文章鏈接的版本有任何問題,我可以更新到最新版本,如果你仍然有問題,我會解決它們。至於C#工具,你是自己的;) – 2009-12-01 08:58:51

+0

非常感謝。你的應用程序似乎按預期工作(而我的服務器*不* :)。將在您的博客文章發佈查詢和評論! – Hemant 2009-12-01 09:41:40

0

在你之前的同樣情況下,我用過FunkLoad。如果你可以寫一個小的客戶端爲Python代碼片斷,然後FunkLoad會只要你想運行儘可能多的針對服務器的,並且繪製結果:

https://funkload.nuxeo.org/

一個完全制定出例如反對一系列的測試服務器是我的Python網絡編程的書的基礎的第二版的核心,如果其公共源代碼庫是任何幫助:

https://github.com/brandon-rhodes/fopnp/tree/m/py2/chapter07