4

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

现在我想测试这个回声服务器

  • 它可以处理多少个连接
  • 什么是响应时间
  • 它使用多少内存和 CPU

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

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

我使用 C# 和 .NET 3.5 编写了这个实现,尽管我相信参考这个问题并不重要。

4

2 回答 2

6

我有一个免费的工具可以帮助你。我用它来测试使用我的 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++ 工具,所以我从来没有改变这个测试程序。 .

于 2009-12-01T08:46:48.493 回答
0

在您之前的相同情况下,我使用过 FunkLoad。如果您可以将小型客户端编写为 Python 代码片段,那么 FunkLoad 将根据需要在服务器上运行任意数量的客户端,并绘制结果:

https://funkload.nuxeo.org/

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

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

于 2014-07-17T16:50:55.010 回答