如何测试TCP服务器实现?

时间:2009-12-01 08:32:29

标签: testing tcp tcplistener tcpserver

我编写了一个TCP服务器实现,使用它我创建了一个作为TCP echo服务的应用程序。

现在我想用

来测试这个echo服务器
  • 它可以处理多少个连接
  • 响应时间是什么
  • 使用多少内存和CPU

请您建议使用任何标准方法/工具来测试此echo服务器。我知道TCP和echo服务器的实现都是相当标准的做法,所以我希望找到可以测试它的既定工具。

P.S。:我可以编写自己的测试应用程序,但我不想这样做,因为如果我看到一些问题,我需要确保它是我的服务器做错了。我不想最终测试我的测试客户端。

我使用C#和.NET 3.5编写了这个实现,但我认为参考这个问题无关紧要。

2 个答案:

答案 0 :(得分:5)

我有一个可以帮助你的免费工具。我用它来测试用我的C ++服务器框架构建的服务器。该工具可在此处获取:http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html。它允许您以可配置的速率创建与目标服务器的可配置数量的连接,然后在每个连接上发送数据(再次以可配置的速率)。

如果发现使用它的最佳方法是在另一台机器上运行它(很明显我知道,但是......)并且可能在多台不同的机器上运行多个副本。请注意,如果您发现无法创建超过4000个连接,那么您很可能需要在运行客户端的计算机上调整MAX_USER_PORT注册表设置。

一旦测试了TCP代码,您可能会发现需要测试服务器支持的协议。我在C#中为这种情况编写了一个测试工具,可以在CodeProject(http://www.codeproject.com/KB/IP/testingsocketservers.aspx)上找到。这允许您编写一个“插件”来支持您的协议并处理与协议无关的内容(许多连接,打破消息,以便您获得碎片读取等)。设计是一个相当讨厌的线程每个连接设计,对于更多的连接,你最好使用异步设计重新实现一些东西,但我有我的C ++工具,所以我从来没有改变这个测试程序.. 。

答案 1 :(得分:0)

在之前的同样情况下,我使用过FunkLoad。如果您可以将一个小客户端编写为Python代码片段,那么FunkLoad将根据您的需要运行许多针对服务器的客户端,并绘制结果图表:

https://funkload.nuxeo.org/

针对一系列测试服务器的完全成功的示例是我的基础Python网络编程第二版的核心内容,以防其公共源代码存储库有任何帮助:

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