最近在学习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%就卡死了。。。心好累
大神们有没有知道是什么原因导致这个情况的,应该怎么优化,或者有什么思路,求助求助!!