多个同时TCP客户端连接进行性能测试

2 投票
2 回答
2869 浏览
提问于 2025-04-16 03:40

我需要同时创建多个TCP连接,目的是为了测试一个自定义的TCP服务器的性能。我知道有很多针对网页的工具,比如基于curl-loader的工具,它是基于libcurl的,但我找不到一个通用的工具。
客户端的场景非常简单:建立连接,发送特定数据,读取回复,然后关闭连接。在每个步骤中都需要记录时间戳。所有的时间戳都应该写入文件,以便后续计算。我需要大约10,000个这样的连接同时进行。
我希望能找到一个现成的解决方案,但在谷歌上没有找到,所以我准备用Python自己写一个。如果这样的话,你能推荐一些合适的Python模块吗?比如说multiprocessing、twisted之类的?

2 个回答

0

处理一万个连接是个很棘手的问题,这个问题被称为C10K问题。如果你需要具体的数字,建议使用C++(可以用Boost或POCO库,或者操作系统的原生API),或者把客户端分散到10个负载生成客户端上。

绝对不要尝试用Python来做这个(在一个CPU核心上处理一万个连接——这不现实)。

1

我来分享一下我的看法:

  1. 可以选择使用Twisted,或者其他的异步网络库。
  2. 确保你在客户端和服务器上可以打开足够的文件描述符。比如在我的Linux电脑上,默认情况下我最多只能打开1024个文件描述符:

    carlos@marcelino:~$ ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    [..]
    open files                      (-n) 1024
    [..]
    
  3. 把客户端和服务器放在不同的机器上运行可能会更好。

撰写回答