“游戏好卡”、“服务器挂了”——我们如何解决服务端性能问题

ChunL

2022-11-143611次浏览

5评论

18收藏

11点赞

分享

游戏有什么性能问题?

通常我们会遇到一个问题就是:卡顿、不流畅。这是影响玩家体验最核心的要素。

 

第二个问题是:挂起、宕机等性能问题。

 

性能测试是每款手游上线绕不开的内容,为了避免玩家遇到卡、宕机、发烫等性能问题,我们需要对性能进行测试。移动游戏的性能测试是什么?如何做服务器性能测试?服务端性能测试手段有哪些?本次,网易游戏ChunL为大家带来分享。

 

以下为分享实录:

 

一、移动游戏性能

 

软件性能是软件的一种非功能特性,它关注的不是软件能否完成特定功能,而是在完成该功能时展示出来的及时性。我们主要考虑这两个方面,会不会卡顿,服务器会不会挂。

 

移动游戏的性能测试是什么?

 

首先讲一下性能测试的三要素

 

第一个是被测对象:客户端和服务端。 

 

第二个要素是测试工具和平台。 

 

第三个是性能指标。

 

性能测试是通过自动化的测试工具,模拟多种正常、峰值以及异常负载条件,来对系统的各项性能指标进行测试。

 

以吃火锅为例,服务端和客户端的性能类似于餐厅的服务能力,客户端就类似于这个餐桌。 

 

二、服务端性能测试

 

1.服务端到底在做什么事情?

 

当我们玩游戏时,客户端和服务端之间发生了什么?

 

我举个例子,ABC三个玩家各拿一台手机(客户端),A玩家释放了一个技能,这个技能会先反馈到服务端,判断能否释放这个技能。在释放技能的过程中,服务端会做一个交互,同时服务端也同步数据给各个客户端。

 

目前服务端的架构非常大,游戏里面有几个定义:

 

逻辑服:玩家看到的服务入口,比如一台物理服上开两个逻辑服,两个服的玩家互不干扰。一个逻辑服也可运行在一组物理服上。

 

物理服:一组服务器,可由一台或多台机器组成。

 

集群:整一个机房就是集群,这个集群可以开很多的逻辑服和物理服。

 

2.如何做服务器性能测试?

 

服务器的性能指标有CPU、内存、磁盘和网络 

 

我们在做服务器性能测试时,需要很多玩家参与满足服务器的性能上限,这里引入一个概念,设计机器人模拟玩家的数据。

 

3.服务端性能测试手段:

 

压测:压力测试,机器人集群模拟真实运行环境,测试会不会导致服务器挂和客户端卡。

 

如何做性能压测呢?

 

游戏研发会有很多阶段,DEMO,研发中早期,渠道测试,正式上线,运营期。

 

压力测试一般在渠道测试阶段进行,因为这个阶段玩家有一定规模,核心玩法成熟,运行时间较短。

 

之后是正式上线阶段,这个阶段有大规模的玩家,玩法和周边系统成熟,并有更高的稳定性要求。

 

在运营期也需要进行压测,玩法迭代引入压力,基础设施更改,新服验收。

 

压力点一般分三种:空间聚集、全服操作、数据库。

 

空间聚集:玩法设计导致的时间或者空间的大量玩家聚集,如活动开始时,全服玩家进行同一传送操作造成的服务器性能问题。

 

全服操作:同一时刻服务器对所有或者大量玩家进行某种操作,可能造成的性能问题。

 

数据库读取:由于数据库使用不当(如没有建立索引)、并发度不够导致的数据库性能瓶颈。玩家频繁登录,数据库读取出现性能问题,数据库负载过高,响应时间过长等。

 

4.如何构建一个合适的压测机器人呢?

 

机器人有三个结构:

第一层是机器人框架,包括机器人启动和停止、管理加密的操作;

第二个是通信协议,通信协议指的是模拟服务端和客户端的协议,登陆匹配的验证手段等;

第三个是测试用例的组织,通过机器人去满足各种测试需求。

 

5.压测结果分析

 

最后对压测结果进行分析,服务器各个进程之间的通信延迟,如果延迟越低,真实客户端服务端的延迟越低。 

 

最终压测结果我们会看综合型数据的分析,对每秒登录数、玩法承载人数、单机承载人数、总承载人数等,进行分析。

 

6.简单的服务端性能优化的思路

 

首先是协议精简,客户端传给服务端太多信息,服务端需要去处理很多事务,会造成服务端突然挂了。做到精简协议的话,是可以优化服务端的性能。

 

另一个是减小压力,避免玩法聚集,避免单点压力。

 

除此之外还有优化引擎、弹性动态扩容等方法。 

评论 (5)

0/1000
网易游学APP
为热爱赋能
扫描二维码下载APP