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

APP性能测试Monkey随机压力测试(android手机压测) adb monkey 压测APP,查看电量内存等指标使用情况 阅读详情

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

较高的市场期待让腾讯测试团队对《龙之谷》手游的测试倾尽全力,面对“经典IP”和盛大游戏一贯口碑,腾讯测试团队对游戏服务器进行了严格的压力测试,上线后服务器稳定的表现也证明了测试团队的用心没有白费。

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

一、项目背景

测试需求产生

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

技术难点

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

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

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

二、实现方案

测试的目标

容量测试:

√ 单服并发用户数:XXX人

√ 各协议响应时间:<1秒

√ 事务成功率:>99.9%

稳定性测试:

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

关键场景压力测试:

√ 登录、主城、世界boss等

√ 各协议响应时间:<1秒

√ 事务成功率:>99.9%

测试前的分析

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

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

示例数据如下:

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

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

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

主要的测试功能

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

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

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

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

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

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

测试中遇到的问题

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

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

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

优化的方法

类型一:单场景问题排查

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

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

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

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

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

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

(//blog-10039692.file.myqcloud.com/1490673569949_6733_1490673570238.png)

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

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

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

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

三、最终效果

测试效果

解决各种宕机、卡顿、掉线问题:

测试期间共发现并修复各类卡顿、宕机、掉线、无法进行游戏等问题20余个,同时准确估算了线上玩家所产生的压力,为最终服务器的部署及稳定运行提供了性能保障与数据支撑。

解决需要多人参与、团战等场景的测试问题:

机器人程序可以用于需要大量用户参与的测试场景,进行自动化测试及验证该类场景是否可以在一定压力下稳定运行:如世界boss战,公会战、跨服擂台赛等。

录像效果

主城移动测试:https://v.qq.com/x/page/l03860ij85k.html

世界boss测试:https://v.qq.com/x/page/l0386whm8qt.html

英雄战场多人对战测试:https://v.qq.com/x/page/t0386qjnmtj.html

“外网问题无小事”,所幸这次《龙之谷》手游上线过程中没有出现常见的面对开服压力而服务器崩溃的事件,在这次的手游测试过程中也可以感受到游戏发行、渠道和CP对服务器承压情况越来越重视。

然而目前市场上还没有针对游戏的服务器性能检测工具,无论是开源还是商业软件都不能很好的满足游戏的专项测试需求,与此同时受限于开发周期短以及人力的问题,中小型CP往往采取编写模拟机器人进行简单的压测,测试的覆盖面窄,无法保证并发请求,造成潜伏的问题遗漏到线上。

此次腾讯测试团队正是利用腾讯WeTest的服务器性能测试功能实现模拟机器人的协议配置,最终实现了《龙之谷》手游的平稳上线。

目前腾讯WeTest的服务器性能测试功能已经开放对外,通过基于真实业务场景和用户行为进行压力测试,帮助游戏开发者发现服务器端的性能瓶颈,进行针对性的性能调优,降低服务器采购和维护成本,提高用户留存和转化率。

体验地址:http://wetest.qq.com/gaps/
手游龙之谷之飓风龙仿官单机版架设教程+附赠GM后台 龙之谷之飓风龙仿官,是介绍单机如何架设。联网架设我不提供教程。如今市面上的资源参差不齐,大部分的都不能运行,本人亲自测试,运行视频如下:手游龙之谷之飓风龙仿官单机版架设教程。 阅读详情

相关推荐

龙之谷【双开】【多开】源码

利用HOOK API的技术,解除龙之谷互斥体双开的限制

记一次《龙之谷》手游代码分析

目录 《龙之谷》手游挺垃圾的代码 首先,工具乱糟糟 其次,用的Unity4.6~4.7的版本 其他,后面补充 《龙之谷》手游挺垃圾的代码 再次证明IP好,管你做的多烂,还是一个有“前途”的游戏 希望如最新宣传文档那样能做到优化:《龙之谷2》进行再一次的全面优化介绍 估计悬 《龙之谷》手游这个源码还真不知道该从哪里开始吐槽 槽点太多,选择困难 ============================ 首先,工具乱糟糟 一般也只有外包会有这样的代码结构,倒不是整个游戏代码有多烂,主要还

大话程序员 2953

游戏 压力测试工具

NULL 博文链接:https://skymr.iteye.com/blog/2017500

《龙之谷》手游服务器数据管理

昨天听同事聊起龙之谷的服务端架构,有些新颖和值得学习的地方,姑且在此总结,加深下理解,也算是做个笔记。 架构 龙之谷的服务端架构主要的特点就是将数据分块。服务端在设计数据时,按照不同功能将数据分块,比如:玩家属性,技能,帮派,排行块等,每个模块就是一个内存对象——keeper,这样就能按功能模块来管理数据。 keeper是如何管理数据的呢?在服务器启动时,所有keeper都加载到内存。

寒风的技术博客 4398

手机游戏如何做压力测试

进入2015年后,测试行业开始重视GAPS技术,开始将其用于压力测试的运用,以WeTest为例,运用GAPS进行的压力测试开始应用于多款游戏大作上线前的压力测试

调用IP核、移植/复制IP核以及解决IP核被锁住/红锁问题(基于vivado)

解决不同工程IP核之间复制调用以及IP核红锁问题,让开发更简单!

weixin_44502554的博客 1万+

移动游戏压测全攻略

移动游戏压测全攻略:目标、流程与优化建议 移动游戏压力测试是确保稳定性和性能的关键环节,主要目标包括发现性能瓶颈(CPU/内存/网络)、验证并发承载能力、检测极端场景BUG(崩溃/卡顿)及优化用户体验(帧率/加载速度)。 核心流程: 制定计划,明确测试目标与用例; 搭建多机型、多网络测试环境; 使用工具链(如PerfDog、JMeter)执行单机/多机压测; 分析关键指标(帧率、内存、崩溃率)并优化问题。 常见问题与优化: 内存泄漏:定期dump内存快照; 卡顿:优化主线程与资源加载; 网络问题:弱网容错与

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1266

CP2102 USB 转 UART 模块 PCB 设计项目

不幸的是,我的笔记本电脑只有 USB 端口,所以我需要在 USB 端口和 UART 接口之间进行转换。PCB 布局将足够小,因此我们不一定需要高速布线 USB 线路,但我们将在此将其作为一个简单的示例来实现,以展示如何在这种类型的电路板上实现它。相反,我们只使用屏幕左侧的电路。在这里,我们利用对之间的间距和到 L1 上的铜灌注的距离将差分阻抗设置为目标值。初始布局分为两个部分:USB 连接器和 USB 线路的 TVS 二极管放置在电路板左侧,带有二极管 D4 和 D5 的引脚接头放置在电路板右侧。

jkh920184196的博客 2401

手游服务器架构

手游服务器架构 最近开始

缥缈的云 专栏 1万+

VirtualLab初学者教程-1.用户界面

目录前言一、VirtualLab Fusion简介1.软件2.内置工具箱:二、用户界面认识1.上方菜单栏2.右侧面主窗口3.底部窗口附 前言 感觉做VirtualLab的资料不是特别多,可能用的朋友也比较少吧,笔者最近也因为大创需要刚刚开始入门,把网上有的英文资料整理了一下,加了一点自己的内容发出来希望帮助更多在学习中的朋友,有用词不当之处还请多多包涵。 一、VirtualLab Fusion简介 因为是第一讲,简单啰嗦一下软件本身,参考官方介绍。 1.软件 VirtualLab是由德国LightTran

ClaireTang1的博客 2万+

【毕业设计】基于雷达与深度学习的摔倒检测——雷达数据集的建立

运动物体的微多普勒效应为人体动作识别提供了可能,基于雷达的居家检测具有良好的隐私保护性,且不易受环境因素影响(如光照、温度等),近年来已受到国内外学者的广泛关注。基于雷达与深度学习的摔倒检测使用自建的雷达数据集进行人体摔倒检测的研究。雷达数据集的建立分为雷达数据采集和雷达数据处理两部分工作。

洋洋Young的博客 3403

移动端网络游戏服务器架构

移动端网络游戏主要分为两种类型,一种是弱联网的,一种是强联网的。弱联网的游戏,主要是指对游戏数据实时性要求比较低的联网游戏,比如卡牌游戏,休闲游戏等。强联网的游戏,主要是指对游戏数据实时性要求比较高的联网游戏,比如MMORPG,ARPG等。要求客户端与服务器之间进行实时通信。在这里主要是跟大家讨论一下如何架设具有负载均衡的游戏服务器,对于游戏服务器开发,自然而然就会涉及到分区...

weixin_34356555的博客 250

【运动规划算法项目实战】如何使用Pure Pursuit算法进行路径跟踪(附ROS C++代码)

在自动驾驶和机器人导航领域,路径跟踪是一项关键技术,它使车辆或机器人能够按照预定的路径规划进行移动。路径跟踪算法的选择对于系统性能和安全性至关重要。本文将介绍一种常用且有效的路径跟踪算法——Pure Pursuit算法。我们将详细讨论Pure Pursuit算法的原理、实现步骤以及如何在自动驾驶和机器人系统中应用该算法进行路径跟踪。Pure Pursuit是一种用于路径跟踪的控制算法。它通过计算角速度控制机器人从当前位置移到机器人前方的某个预瞄点。假定线速度是恒定的,当然可以随意更改机器人的线速度。

xiewf的博客 1万+

3D动作手游【龙之谷】服务端图文手工搭建教程

3D动作手游【龙之谷】服务端图文手工搭建教程

T_Snail_T的博客 1207

26、特洛伊木马:威胁与防范

本文详细介绍了多种常见的特洛伊木马,包括RegForm、ProMail和远程访问特洛伊木马(RATs),并分析了其工作原理与危害。重点讲解了著名RATs如Back Orifice、SubSeven和The Thing的技术特点,揭示了黑客编写特洛伊木马的常用语言与方法。同时,提供了有效的防范策略,如谨慎获取软件、使用回滚程序、杀毒软件、防火墙及反特洛伊木马程序,并通过流程图展示了防御机制。旨在帮助用户识别威胁并加强系统安全防护。

e3f4g5的博客 88

innovus:ccopt_design流程

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?spec文件可以只创建一次,无需多次创建。2)virtual balance阶段。3)Full Balancing阶段。4)Clock Routing阶段。1)clustering阶段。

m0_61544122的博客 2477

游戏服务端架构简析

文档主要记录一些流行的服务端架构,并以FPS游戏架构为例,谈谈一些游戏服务端开发可能遇到的问题。

宣小K的博客 4837

RT-Thread littefs控制GD32F4xx片内Flash

GD32F4xx RT-Thread下使用littefs 控制片内flash 调试记录

madao1234的博客 995

手游服务器那点事-常见架构

1 最简单的一种   2 开房间类:     3 MMO类:   服务器大概架构有以上几种。大体框架一致,每种游戏的架构都有细微的区别。 比如还有 LogServer MatchServer,跨服服务器之类的。 需要根据不同游戏做不同的服务器。总的原则是需要把游戏逻辑和游戏数据尽可能就独立出来了。 独立出来了就演化出各种的server类型,然后再有一套路由规则把整个...

3807

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java增强班_【图片】龙之谷模拟强化Java版_龙之谷吧_百度贴吧

该楼层疑似违规已被系统折叠隐藏此楼查看此楼package test;import java.util.Random;public class Test {public void x(){int level=0;int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,a10=0,a11=0,a12=0,a13=0,a14=0;int b3=0;Random...

weixin_42467768的博客 336

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

手游上线前的五种测试的基础方法

手游测试中普遍存在的问题之一就是如何涵盖所有可能运行你游戏的设备。尽管市面上有数千款Android设备(以及iOS各个版本的系统),但其中仅有数百款真正与你的游戏产生联系。在本文,我们将探讨手游测试的各种方法,以及手游测试的基础和组成。 一、手游测试的构成和基础让我们首先讨论软件架构。目前,许多手游均基于开源或商用游戏引擎,如Unreal、Unity3D、Cry Engine、Construct、Play Canvas、Cocos2D等(声明:本人在此列举的游戏引擎仅作说明之用,并未对该等引擎.

ludongguoa的博客 2240

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

阻击外挂——《龙之谷手游》安全测试的那点事

腾讯游戏内部的测试流程已经将“手游安全测试”设立为必经环节,腾讯大部分手游上线前都会进行手游安全测试,《王者荣耀》、《穿越火线:枪战王者》,《梦幻诛仙》等六星级游戏更是每一个版本都主动寻求手游漏洞扫描。《龙之谷手游》同样也是如此。

wetest_tencent的博客 2331
上一篇: 新增线下、APP、公众号多处入口,小程序会再火起来么?
下一篇: 云服务利用Auto Scaling节省30%成本
Qcloud_KID
博客等级 码龄10年 34粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值