安静的等待

茹呲綄鎂
posts - 51, comments - 9, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

IM服务器压力测试

Posted on 2007-07-27 09:10 ricki 阅读(1149) 评论(0)  编辑  收藏 所属分类: 压力测试
IM的服务器压力测试今天完成了。总的来说,测试结果令人满意。

IM服务器配置如下:
CPU:至强3G双核 x 1
内存:1G
硬盘:140G SISC硬盘
IM服务之外的其余服务:
IM & 客户端 自动更新服务
公司网站web服务
公司邮件服务

测试方式:
3台计算机并发模拟客户登陆及聊天。登陆包括查询与下载好友列表、好友资料、群组列表、群组资料;聊天测试方式为,每个模拟客户端每1秒向好友列表中的一个好友发送一条文本消息。所有好友消息均为服务器转发,因为如果使用P2P方式的话,一旦P2P通道建立,数据便不再经过服务器,对IM服务器的压力不产生影响,因此,便没有测试P2P方式下的压力数据,而选择测试服务器转发方式下的压力数据。

最终的测试结果为:
服务器转发模式下,大约能同时支持3000人登陆,4865人同时聊天(服务器崩溃前最近一次读数)。
光登陆就超过2000,令人非常满意,而且4865人同时聊天,这还是在未进一步优化的情况下获得的数据。接近5000的数据,令人很是高兴。

最后,IM服务器的架构简述:
采用4IOCP。其中一个TCP IOCP用作管理员客户端连接,以及将来的服务器聚合扩展;一个TCP IOCP用于用户客户端登陆登出,以及数据补包;一个UDP IOCP用于心跳、P2P打洞处理、中转聊天的文字消息(包含系统表情);一个UDP IOCP用于中转聊天的非文本数据(比如图像)。4个IOCP间的桥接及系统日志、管理员日志、用户日志、插件日志均采用队列处理。系统所有内存使用均有专门的内存管理器负责管理。至于UDP为什么也要采用IOCP,原因则是,虽然普通的UDP已经很快了,但是,每次发送,接收仍均需要阻塞等待。虽然每次阻塞的时间很短,但积少成多,在大量连接的情况下,仍然会比较可观。而采用IOCP,则就是为了经量减小每次阻塞的时间。
最后,关于系统资源占用:
CPU:4%-9%。即使达到4865用户同时在线聊天,CUP占用率也一直处于4%-9%
内存:IM服务器刚刚启动时,占用内存7M多,当4865用户同时采用服务器中转方式在线聊天时,达到190M。


只有注册用户登录后才能发表评论。


网站导航: