多个同时TCP客户端连接进行性能测试
我需要同时创建多个TCP连接,目的是为了测试一个自定义的TCP服务器的性能。我知道有很多针对网页的工具,比如基于curl-loader的工具,它是基于libcurl的,但我找不到一个通用的工具。
客户端的场景非常简单:建立连接,发送特定数据,读取回复,然后关闭连接。在每个步骤中都需要记录时间戳。所有的时间戳都应该写入文件,以便后续计算。我需要大约10,000个这样的连接同时进行。
我希望能找到一个现成的解决方案,但在谷歌上没有找到,所以我准备用Python自己写一个。如果这样的话,你能推荐一些合适的Python模块吗?比如说multiprocessing、twisted之类的?
2 个回答
0
处理一万个连接是个很棘手的问题,这个问题被称为C10K问题。如果你需要具体的数字,建议使用C++(可以用Boost或POCO库,或者操作系统的原生API),或者把客户端分散到10个负载生成客户端上。
绝对不要尝试用Python来做这个(在一个CPU核心上处理一万个连接——这不现实)。
1
我来分享一下我的看法:
- 可以选择使用Twisted,或者其他的异步网络库。
确保你在客户端和服务器上可以打开足够的文件描述符。比如在我的Linux电脑上,默认情况下我最多只能打开1024个文件描述符:
carlos@marcelino:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited [..] open files (-n) 1024 [..]
把客户端和服务器放在不同的机器上运行可能会更好。