专栏名称: 游戏葡萄
游戏葡萄:有前瞻、有判断的新锐游戏产业媒体。这里有关于游戏产业的深度分析、独家报道、交易资讯和热辣小道。投稿与商务合作邮箱: [email protected]
目录
相关文章推荐
触乐  ·  杜甫的桌游桌丨触乐怪话 ·  3 天前  
游戏葡萄  ·  一句话就直接生成3000多行游戏代码的AI来了 ·  3 天前  
游戏研究社  ·  涉嫌窃取Nexon游戏机密,《Project ... ·  3 天前  
51好读  ›  专栏  ›  游戏葡萄

日新进用户200W ,解密《龙之谷》手游背后的压测过程

游戏葡萄  · 公众号  · 游戏  · 2017-03-27 21:25

正文

本文记录了《龙之谷》手游压测过程中的点点滴滴,希望给其他手游的压测提供思路、方法和工具的借鉴。


本文首发于公众号“腾讯WeTest”,作者吴雁林,腾讯高级测试开发工程师,5年服务器测试经验,曾负责《保卫萝卜3》,《龙之谷》服务器性能测试。游戏葡萄已获转载授权。


2017年3月,腾讯于全平台上线了《龙之谷》手游,次日冲到了App Store畅销排行第二的位置。上线当日百度指数超过40万,微信游戏平台数据显示预约数780多万,而据内部人员透露当日新进用户200W+,这就是《龙之谷》手游在安卓平台上所取得的成绩。


较高的市场期待让腾讯测试团队对《龙之谷》手游的测试相当看重,面对“经典IP”和盛大游戏一贯口碑,腾讯测试团队对游戏服务器进行了严格的压力测试,对产品品质给予了严格的要求。


本文记录了《龙之谷》手游压测过程中的点点滴滴,希望给其他手游的压测提供思路、方法和工具的借鉴。


一、项目背景


测试需求产生


《龙之谷》手游初期性能并不好,无法同时支持大量玩家同时进行游戏,存在卡顿、无法登录、掉线等一系列性能问题。无论从玩家流失率的降低,还是游戏体验的提升,针对该游戏的性能测试迫在眉睫。


技术难点


为了产生足够的服务器压力,《龙之谷》手游测试团队选择与腾讯WeTest合作,使用了其服务器性能测试专家模式的代码开发,产生与客户端行为相似的机器人对游戏服务器产生压力,并且有针对性的配置机器人的行为用于测试容易产生问题的场景,可视化的获取性能数据后进行分析。


由于机器人侧需要模拟客户端的逻辑向服务器进行发包,所以必须理解其游戏协议并融入腾讯WeTest测试框架中,在腾讯WeTest专家的帮助下,使用针对google protobuf协议的代码模板自动化生成工具,成功实现模拟客户端的机器人开发,并产生最高每秒并发上万的压力。


另一方面,由于游戏比较重度,压测的场景选择与用户的行为分析也成为难题。在专家的建议下,通过分析删档测试时服务器各协议频率数据,分别按协议比率的多少、处理时间长短、筛选出待测的场景与重点协议。主要针对登录、好友、交易所、主城、语音、单人pk、英雄战场、赛马、世界boss、在线副本以及数据库等进行了重点调试及压力测试。


二、实现方案


测试的目标


容量测试:


√  单服并发用户数:XXX人

√  各协议响应时间:

√  事务成功率:>99.9%


稳定性测试:


综合场景压测48小时无问题,关注各系统资源稳定性


关键场景压力测试:


√  登录、主城、世界boss等

√  各协议响应时间:

√  事务成功率:>99.9%


测试前的分析



一般压测模型由三部分组成,机器人、服务器和数据库,游戏服务器主要是优化热点游戏逻辑、协议栈参数、系统网络参数、同步机制等。数据库是优化sql语句,优化索引,优化数据存储等。机器人部分由平台自动分配压力机,如未产生明显bug,无需进行调优。


在架构分析之后,需要构建机器人模型,模型构建方法一般是根据研发打点数据,统计在一段时间内,删档服各单个协议总数与耗时并计算压力值与百分比:



示例数据如下:


删档服不同时间点各单个协议总数与耗时并计算压力值与百分比示例


需要注意的是,除了关注占比靠前的协议进行调试,另外需关注平均耗时较长的协议中逻辑是否存在优化空间,因此该类耗时较长的协议也在测试范围之内。


在获取模型并开发完机器人之后,可以通过腾讯WeTest服务器性能测试产生压力,通过其提供的网卡性能图中包量和流量的分析来判断压力机器人模型是否有效反应了真实玩家的行为。



主要的测试功能


● 登录、创建角色、进主城、新手引导压测

● 主城移动、聊天、做任务、装备升级压测

● 好友操作、技能升级、副本战斗、世界boss压测

● PVP、PVE、天空竞技场、活动压测

● 组队、购买物品、抽宠物、交易所、公会压测

● 针对以上场景的综合压测


测试中遇到的问题


类型一 :单协议场景支持并发过低,该类场景集中触发时,会发生同服玩家卡顿、无法登录游戏、掉线等问题。如登录、技能升级、装备强化等。


类型二 :部分热点场景如主城、世界boss支持人数不足,易发生玩家集体卡顿、掉线等问题。


类型三 :其他在高并发长时间运行下容易出现的问题:缓冲区不足、进程崩溃、内存泄露等。


优化的方法


类型一:单场景问题排查


在机器人开发完毕后,可以通过腾讯WeTest服务器性能测试专家模式中的单场景测试,逐步增加场景压力,若发生:服务器进程cpu资源耗尽、回复消息过慢、回复消息失败,则表示服务器到达瓶颈,此时一般可通过系统工具(top、perf、iostat、vmstat等)排查热点逻辑,查看是否存在优化空间,或从逻辑机制上解决。


热点逻辑排查(业务名已隐去)


图中展示了简单场景中,QueryGate请求无法满足并发量100的要求,遇到这种情况,一般可以使用perf排查服务器热点逻辑进行优化。



类型二:容量测试问题排查


综合场景一般包括之前筛选出的所有场景,将所有玩家按照一定比例(比如60%在主城,40%在副本战斗),该比例一般可以通过不同场景下的心跳包频率比例看出。


主要会遇到的问题为:游戏卡顿、玩家掉线等,该类问题一般为客户端或服务器各进程资源遇到瓶颈所致。排查方法与单场景类似,不再过多描述。


各场景的数据表现(事务名已隐去)


类型三:稳定性测试问题排查


稳定性测试中易出现服务器宕机、内存泄露等情况,针对服务器宕机,一般通过gdb分析core文件,并结合所测场景的机器人行为进行分析宕机原因。



通过查看稳定性测试中的内存变化曲线,可以判断服务器内存是否稳定或泄露,若发生泄露,一般可通过内存检测工具,如valgrind等对服务器进程进行排查。









请到「今天看啥」查看全文