- 论坛徽章:
- 9
|
本帖最后由 wlmqgzm 于 2015-11-04 00:05 编辑
回复 124# benjiamsh
benjiamsh 发表于 2015-11-03 17:50 ![]()
那么每秒的100M 数据吞吐,如果以一条消息为100字节, 简单的echo 服务器,可以做到全速的吞吐 那么QPS 就是1M 也就是100w 无须任何架构。 即使最差的服务器也是绰绰有余。.
ECHO SERVER就是来测试小数据包的, 看来你没有做过网络架构的边开发边测试, 一般都用这个简单服务器来测试底层网络的小字节包的处理瓶颈, 测试的不是字节数量, 测试的是数据包的量, 每个数据包可以是1-几百字节都无所谓.
测试端每次只发1个数据包, 服务端回一个一模一样的包, 跟PING一样,
100万QPS ECHO就是说每秒钟要PING 100万次, 这个是: "发出1个独立数据包, 等待响应, 收1个独立数据包", 这样重复的动作有100万次.
收到回包后, 客户端才会发下一个包, 注意: 不是连续发包, 是一定要等服务器响应回复的, 所以ab测试指标中才有最大响应时间, 平均响应时间等概念,
因此, 测试软件ab发出的IP数据包的数量非常巨大, 每个包非常小, 不是测试网络带宽的, 是测试包处理能力的.
同样用ab测试网络架构, 同样ECHO SERVER, 有的网络架构只能达到几千, 有的达到几十万, 还是有很大区别的. 在程序开发阶段, 找一个简单易用的测试工具, 对于开发代码有很大的指导作用.
即使是测试 最流行的WWW服务器Apache本身( ab也是apache开发的测试http服务器的程序), 回复数据就是几十个字节, 采用epoll底层的新版本的测试指标比过去老版本提高十倍以上, 测试指标也是能够说明技术架构, 对于性能的提高是非常明显的.
另外, 底层网络架构做好, 真的很不容易, 大公司对网络架构的重视, 超出你的想象, 都是有专业团队的,
你自己找个服务器代码, 测试一下就知道了, 没有你想象的那么简单, 性能做好了不容易, 做安全做可靠了也非常不容易, 需要大量的基础工作.
目前开源的超过10万QPS ECHO的网络层开源代码都是牛人的大作.
很多游戏公司, 都有自己独立开发的网络框架, 为了性能, 也是走到网络框架的前头, 不是随便写点代码就可以用的.
底层框架采用ASIO以后, 在代码中理论上可以承受100万以上连接, 还可以稳定运行, 继续保持一定的处理能力, 但是彻底测试这个东西, 本身就是一项比较大的工程,
真正网络框架定型后, 代码彻底完成后, 如果要找出极限指标来, 是要找很多机器测试的, 每个IP只能开6万个并发(受socket端口号理论数量限制, 还要改linux默认配置, 才能实现6万), 要测试120万个并发,
最少要多找几台机器做客户端, 要做专门的测试客户端软件, 找一群机器狂轰主服务器, 显然比较麻烦.
目前, 代码还有可改进的地方, 以后再说吧. 在边学习, 边写代码中....... |
|