广播服压测总结
Contents
前言
游戏即将上线,本周对广播服进行压力测试,不断调整代码,最终达成了单进程2000人的目标。一些注意事项和大家分享下。
服务端策略
采用集群方式,单进程连接数量控制在2000人
- 获取连接数量
js wss.clients.size;
- 当连接数达到2000人时,服务端断开客户端并返回错误码。
js wsClient.close(1008, 'connector num max');
- 连接但5秒内不完成登录验证的客户端要关闭
同一个频道玩家集中在同一个进程
- 连接端口作为数组返回给客户端
- 客户端从第一个端口轮询请求可以连接的服务端,直到连接成功。
减少RPC操作,提升通信效率,虽然策略有点低级。
广播相关
- 消息广播区域分级,频道内、进程内,当前服,所有服
- 不同广播区域需要不同的权限,所有服不对客户端开放。
- 不同广播区域的消息冷却时间不同。
消息相关
- 精简消息内容,删除消息内无用数据,尤其优化通讯频繁的消息。
- 心跳时间频率适当降低,调整为10秒一次。
- 心跳信息不打印。
日志
- 打印接收的消息
- 打印一些重要日志
- 不打印发送给客户端的消息
适当降低日志,能提升服务端承载能力。
机器人策略
- 每0.5s创建一个机器人进程
- 登录聊天服务器
- 10s一次心跳
- 30s一次玩家状态同步
- 35s一次世界聊天(频道内200人广播)
- 90s一次随机推荐好友(进程内随机)
- 120s一次房间招人(当前进程内所有人广播)
- 聊天关闭则从步骤2重新开始
测试策略
- 采用和线上同样的环境测试。
- 短期测试可按小时、天来申请服务器测试。
- 受网络限制,测试机器人和服务器之间内网通信。
Author wangkm
LastMod 2018/09/10