【问题标题】:How to test a TCP server implementation?如何测试 TCP 服务器实现?
【发布时间】:2014-07-18 00:50:55
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: testing tcp tcplistener tcpserver


    【解决方案1】:

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

    【讨论】:

    • 我一直使用它的一个版本来测试我的服务器框架,(它在我的构建机器上运行以测试我所有的框架示例服务器),它是我使用的几个自定义测试工具的基础多年来一直为客户开发。如果您对从博客文章链接的版本有任何问题,请告诉我,我可以将其更新到最新版本,如果您仍有问题,我会修复它们。至于 C# 工具,你就靠你自己了 ;)
    • 非常感谢。您的应用程序似乎按预期工作(而我的服务器没有 :)。将在您的博文中发布查询和 cmets!
    【解决方案2】:

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

    https://funkload.nuxeo.org/

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2021-01-06
      • 2014-09-01
      • 2020-02-04
      相关资源
      最近更新 更多