- 论坛徽章:
- 2
|
我需要测试自己写的服务器程序的吞吐能力:
每秒能够成功接收客户端连接(3次握手)的极限值
我的想法是:
1. 测试服务器的吞吐能力不能掺杂网络因素, 比如因为网速限制导致服务器每秒监听到的网络事件数量受限, 所以测试的时候服务器和客户端应该在同一台机器上进行;
2. 写一个客户端程序, fork出多进程或多线程, 每一个子进程或线程向服务器发起n个连接
3. 服务器设置一个计时器, 每秒打印接受到的连接数量
实际中我尝试(10个, 20个, 50个, 100个)线程, 每个线程向服务器发起1000个连接, 调用的connect函数为阻塞式的(非阻塞的connect也试过, 不知为何很多连接都失败了), 结果: 服务器最高可以每秒成功接受差不多15000个连接
我看网上经常出现的高并发服务器声称每秒能接受几十万个连接, 因此我有些疑惑, 到底是服务器程序有问题, 还是客户端的测试方式有问题, 或者两者都有问题?
最后, 请教一下大家通常是如何测试服务器的并发能力的?
我的服务器程序很简单, 单线程, 一个while循环, 不断调用accept接受连接, 每次成功accept一个连接, 每秒接受的连接计数加一.- while true:
- int conn_fd = accept(listen_fd)
- n_connection ++
复制代码 |
|