Boost.ASIO 压力测试时,系统和压缩内存 占用CPU高

WayneHu 2016-07-08 02:29:53
最近在学习ASIO,基于他写了个服务器框架,并进行压力测试:

服务器开一个网关服Gate,两个入口服Entry,一个游戏服Game;开一个客户端,总攻发起了4000个链接,测试流程如下:

客户端连接Gate,获取Entry地址,断开Gate,链接Entry,链接成功后,每200ms发送一次本地时间到服务器;
服务器Entry收到消息,转发给Game,Game将客户端发过来的时间,原样返回给Entry,Entry再转发给客户端。客户端收到消息后,再次取本地时间,相减得到差值,用于统计

测试环境:
CPU:i5-3210M CPU @2.5GHZ
内存:8G

测试情况如图:


其中日志信息每秒输出,内容为:
[当前连接数]: 最小时间 最大时间 处理的消息数 平均时间 最新一次的时间

当4000链接时,服务器将每秒接收到2万条消息进行处理,而此时CPU主要消耗在 系统和压缩内存上,通过查看:

主要消耗在这里。

另外我在Win7上也测试过,主要CPU消耗在System进程上(NT Kernel & System),并且Win7上当System占满一个CPU(四核i5, System占25%)时,整个系统就卡死不动了,此时总CPU消耗才30%。

而我原本是想通过多进程,单线程的方式来简化开发,用集群来提高性能。但现在CPU才30%就卡死了。。。心好累

大神们有没有知道是什么原因导致这个情况的,应该怎么优化,或者有什么思路,求助求助!!
...全文
1008 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
随心而动a 2020-06-17
  • 打赏
  • 举报
回复
为什么你可以发起4000的连接呢? 我的测试程序,一个客户端只能发起70个连接,一个服务端只能接受1800+个连接。
赵4老师 2016-07-08
  • 打赏
  • 举报
回复
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧