1、移动游戏质量白皮书 2020 MOBILE GAME QUALITY WHITE PAPER 2020 03 掌门人致辞2 概述 5 兼容性报告12 客户端性能报告20 服务器性能报告 目录 26 移动设备市场概况 6 分辨率、内存、核心数占比分布概况 2020年新机型概述 7 11 客户端性能的腾讯游戏发布标准 客户端性能审核时常见问题 腾讯手游性能大数据 2020 安卓OpenGL ES、Vulkan版本分布 21 22 23 25 游戏服务器性能测试策略 游戏服务器性能测试参考标准 服务器性能测试问题示例 27 28 30 手游安全性报告32 外挂数据大盘点33 企业标准体系建设 40
2、关于WeTest 稳定性包括服务器长期稳定地提供服务; 压测标准: 事务90%响应时间不应超过1秒,成功率大于99.9% 单线程服务单核cpu不应超过70%,多线程服务不应超过线程cpu的70%,内存无swap 容量应覆盖90%以上流量的协议,可承载1.5倍以上的峰值压力 稳定性方面,在持续十小时以上的时间中,服务无重启,内存无泄漏,吞吐量无下降 28 混合场景测试 单场景测试 重要场景游戏类型其他场景 容量测试 稳定性测试 登录 邮件 跨服匹配&战斗 拉取类:好友玩 家信息,排行榜 等信息 MMORPG 主城跑圈,技能升级,道具使用, 上下坐骑,装备附魔,购买物品, 世界BOSS,副本等 A
3、CG 匹配战斗,核心玩法(如竞速,射 击等) SLG 建筑升级,材料收获,集结,行军, 世界地图滑动等 MOBA 开局匹配等 游戏服务器性能测试常见问题 1、IO问题导致耗时高:大部分游戏都会碰到登录tps低,耗时偏高的性能问题。比较常见的 原因是:IO请求串行导致耗时高;登录逻辑太重,下发大量数据。 2、内存问题:性能相关的内存问题,C+开发中尽量使用预分配的方式,大量频繁的申请和 释放内存消耗很大;内存泄漏相关问题(在C+开发中较为常见);GC内存回收机制不合理 (在go,java语言开发中较为常见)。 3、CPU问题:计算量大,优化算法,分批计算。多出现于多人同屏战斗,拉取好友界面数据,
4、 实时排名运算,全服消息广播等。 4、网络数据问题:大量网络包的同步导致耗时问题,同逻辑帧的合并发送;上报游戏数据处 理过慢导致游戏主进程阻塞。 5、系统参数配置问题:数据库,web服务器,中间件,系统文件描述符,缓冲区大小等相关 的参数配置不当会导致性能上不去。 29 服务器瓶颈的表现 开服一直登录不进去 服务器频频断连,不断报错 多人同屏释放技能卡死 副本里打了一半掉出游戏 排行榜数据一直显示不出来 组队队友瞬移,没有同步战斗数据 限时活动无法参加 匹配战斗一直在loading中 30 跨服性能问题 示例1:跨服好友信息导致掉线 跨服频繁拉取好友信息导致消息堵塞。 示例2:跨服成就信息导致
5、掉线 跨服发送成就获取请求包,而每个请求有300多 个回包,导致瞬间消息包过多,造成网络阻塞。 示例3:跨服关联大区配置数过多 战场服关联的大区配置数较多,QPS预估不对, 超负载部分玩家无法进入。 登陆问题 示例1:登录-大量新手登入时高延迟 初始化时对Redis的操作过于频繁,优化平台拉 取名字的异步操作,以及对初始化时redis的操作 进行批量合并,去除部分无用消息投递。 Redis Hotkey 示例1:Redis Hotkey-联盟战斗匹配 联盟之间战斗需要提前报名,等待匹配服分配 完成后,定时开始战斗。在大量请求查看联盟 战状态时,由于是全区玩法,Global Redis单 节点访
6、问量达到9w,Global redis单节点负载高。 示例2:大量玩家同时组队时,redis负载高 同类key集中在了同一个redis实例上,导致该 节点CPU full。twemproxy 代理,Redis 集群分 片算法的原理是:根据key名逐字符进行hash (例如A:B:C:D越靠前越分散)。解决方式: 对同类key在前端server进行缓存;进行key 名改造。 信息拉取问题 示例1:好友-大量玩家互加好友,加入联盟。玩 家切换到社交UI时无限重连,联盟成员无法加载 每个好友会查询45次DB(可能涉及等级、公会 成就等各种信息),好友多时DB负载过重,调 整为总好友查询UI页面只显示