pomelo性能分析
目 录
测试环境
- 服务端测试环境
- 客户端测试环境
测试结果
- 多进程多角色同时战斗场景(最多486个角色)
- 多进程多角色同时行走场景(最多800个角色)
- 多进程多角色同时战斗/行走场景(最多558个角色)
测试环境
1.1 服务端测试环境
服务 | 机器 | 硬件配置 |
---|---|---|
GameServer & WebServer |
pomelo3.server.163.org |
云主机 1CPU 8核心 CPU型号 GenuineIntel QEMU Virtual CPU version [email protected] 16G 内存 1网卡 linux/64位 OS |
说明:
- 服务端采用Node.js开发, 磁盘IO主要为log写入, 所有game-server服务器均配置toobusy(MAXLAG为默认的70ms), 出现瓶颈的部分在CPU.
1.2 客户端测试环境
服务 | 机器 | 硬件配置 |
---|---|---|
Clients | pomelo16~25.server.163.org |
云主机 1CPU 1核心 CPU型号 GenuineIntel Westmere E56xx/L56xx/X56xx (Nehalem-C)@2.6GHz 1G 内存 1网卡 linux/64位 OS |
说明:
- 客户端是全部走内网的。
测试结果
1. 多进程多角色同时战斗场景(最多486个角色同时处于area3场景)
- 9台云主机上各启动1个客户端进程, 每个客户端进程上运行1个代理, 每个代理负责55个角色, 这样会有495个角色登录游戏. 9个客户端代理并发, 每2秒发起一次角色登录操作, 最终会有486个角色同时处于area3场景, 登录成功的角色每隔2~5秒发起一次攻击(攻击对象为附近的其他角色或者怪物)或者捡道具操作. 攻击的成功率为98.29%. 如下图:
- 每个角色的出生点随机分布于15个点上, 如下图:
- 486个角色都登录成功并开始发起攻击时, 服务器和pomelo16客户端的top:
- 测试完毕时服务器和pomelo16客户端的top:
- 测试过程中服务器状态:
- 9台云主机上各启动1个客户端进程, 每个客户端进程上运行1个代理, 每个代理负责90个角色, 这样会有810个角色登录游戏. 9个客户端代理并发, 每2秒发起一次角色登录操作, 最终会有800个角色同时处于area3场景, 登录成功的角色每隔2~5秒发起一次移动操作. 移动的成功率为99.95%. 如下图:
- 这800个角色随机出生于地图上的15个点. 每一个角色的移动操作都是有规律的, 8次移动为一轮动作循环, 每次的步长为随机值(1~walkSpeed), 8次移动后该角色大致可以回到起点. 这么做的目的是尽量将角色限定在其出生点附近, 以使得所有角色尽量均匀分布于整张地图. 如下图:
- 800个角色都登录成功并开始移动时, 服务器和pomelo16客户端的top:
- 测试完毕时服务器和pomelo16客户端的top:
- 测试过程中服务器状态:
3. 多进程多角色同时战斗/行走场景(最多558个角色)
- 9台云主机上各启动1个客户端进程, 每个客户端进程上运行1个代理, 每个代理负责63个角色, 这样会有567个角色登录游戏. 9个客户端代理并发, 每2秒发起一次角色登录操作, 最终会有558个角色同时处于area3场景, 登录成功的角色每隔2~5秒发起一次攻击(50%)或者移动(50%)操作. 攻击的成功率为99.50%. 移动的成功率为99.57%. 如下图:
- 这558个角色随机出生于地图上的15个点. 角色攻击时的对象为附近的其他角色或者怪物. 角色的移动操作都是有规律的, 8次移动为一轮动作循环, 每次的步长为随机值(1~walkSpeed), 8次移动后该角色大致可以回到起点. 这么做的目的是尽量将角色限定在其出生点附近, 以使得所有角色尽量均匀分布于整张地图. 如下图:
- 558个角色都登录成功并开始攻击/移动时, 服务器和pomelo16客户端的top:
- 测试完毕时服务器和pomelo16客户端的top:
- 测试过程中服务器状态: