【游戏】服务器性能测试(七)哪些业务需压测?
一、前言
在进行服务器性能测试的时候,经常需要对业务进行筛选和排优先级,有些业务是需要优先进行,而有些则可以放缓,那么到底如何对业务进行划分呢?本篇接下来就对业务的选择划分做下简单的介绍。(注:本文的全部图片均来自网络)
二、测试业务的选择
首先决定服务器性能的主要指标有:CPU、内存、网络,其实还有一个隐形的指标就是数据稳定,即不可产生数据丢失、数据异常。CPU主要消耗在逻辑运算上,几乎所有的业务都需要消耗CPU;内存主要指加载进内存后生成的对象所占用的内存,除了防止业务产生内存泄漏外,还需要避免整体内存占用过高;网络主要产生在服务器与客户端或其他网元节点数据交互上,占用较高网络带宽不仅产生流量费用,而且会引起游戏体验的卡顿。
1. 数据读取、存储相关的业务。
“网络游戏其实就是一堆数据而已”,此语已道破真相。就像单机游戏的存档一样,删除存档就只能重新开始,有了别人的存档数据就可以按照他的进度继续下去。网络游戏所有玩家的数据都存储在服务器上,一旦产生数据丢失后果就会非常严重,因此做好数据的存储和读取相关业务的性能测试是重中之重。很多业务都涉及数据的读取和存储,以下列举了两个比较重要的业务场景。
1) 注册业务:新玩家进入游戏,由于服务器上没有这个玩家的数据,因此需要单独创建与这个新玩家相关的所有数据。
2) 重复登录:在离线的情况下,玩家登录时需要将玩家数据从数据库重新加载回内存,玩家下线后需要将玩家数据保存回数据库。
图片源自网络
2. 个人业务。
玩家的单个操作产生一条数据变动,并且这条数据只会与这个玩家有关,不会影响到其他的玩家数据或者服务器全局数据。针对这样的业务就可以归类为个人业务,以下简单列举几个这样的业务场景。
1) 玩家打开宝箱获得了一件物品(可能是稀有物品),玩家的物品数据会相应的改变。
2) 玩家升级某个技能、宠物、坐骑等,仅这个玩家的相关数据发生变化。
3. 多人交互性业务。
玩家的单个操作会与其他玩家的数据产生交互,最终导致多个玩家的数据发生变化;或者玩家与他人的交互涉及到服务器多网元之间的数据传输和状态改变。这些业务都可以归为多人交互业务。
1) 玩家组队,比较常见的多人交互业务,这通常是多玩家数据在多网元节点间传输,以及状态的改变。具体可以去了解组队业务的流程图、时序图等。
2) 玩家交易,这也是比较常见的交互业务,而且会涉及多玩家的数据发生变更。
图片源自网络
4. 广播性业务。
玩家的操作需要广播通知给周围的、全部在线的玩家,甚至是离线玩家。这样的业务主要涉及网络数据的广播传输。会随着广播范围的增大而产生成倍的网络流量消耗。
1) 聊天业务,世界聊天,联盟聊天等等都是会涉及消息的广播。
2) 玩家更换时装,装备特殊效果武器,场景内行走、战斗等也是会产生广播数据到周围玩家。
5. 活动业务(本服及跨服玩法)。
我想现在已经没有哪个网络游戏会没有活动玩法,活动玩法是留住玩家,提高在线,增加收入的手段,同样活动玩法往往涉及多人交互,网络消息广播,活动数据、排行榜数据存储等。例如公会战、BOSS战、跨服玩法等。
图片源自网络
三、总结
在性能测试进行业务选择时,优先需要考虑数据的读取和存储相关业务,然后就是大型活动和多人交互玩法,再者就是涉及广播相关的业务,最后是那些个人的业务。还有一个比较重要的点就是必须了解所有业务在服务器中的数据、消息处理流向(例如时序图),在做性能测试的时候往往也需要优先对多网元节点交互的业务进行测试,因为涉及异步交互的业务出问题的可能性非常大。
欢迎微信搜索"游戏测试开发"关注一起沟通交流。