压测初步认识

发布于:2022-10-14 ⋅ 阅读:(447) ⋅ 点赞:(0)

一、压测主要目的

1、发现服务端性能的问题,避免线上发生事故

2、评估单机性能、从而确定机器部署规格

(例如,通过压测获得一台game server capkie单幅承载是5000人,发行预估一个在线人数,进行机器部署)

二、压测的方式

负载测试

负载测试主要是模拟不断的逐步增加我们一个用户的数量,通过不断的加上并发数,观察它在不同并发数下的响应时间(RT)以及吞吐量从而发现性能的瓶颈,找到拐点

压力测试

压力测试是在测试服务器在高并发的情况下,持续运行较长时间,看服务器是否能正常提供服务,压力测试的前提是已经进行了负载测试,只要服务最大能接受多大的负载,然后在最大的负载下进行长时间运行,一般是运行24小时的倍数。因为较长时间运行,可以测试出系统是否有内存泄漏等问题,或者说一个指令的 QPS ,指定准入下它 CPU 内存、网络 IO 等能不能达标。

容量测试

容量测试是指在特别多的数据的情况下进行测试,看服务器响应有没有变慢,同一个查询接口,如果数据过多,查询没有优化,用少量数据是无法测试出来性能的;

稳定性测试

稳定性测试没有压力测试那么长时间,常见于秒杀系统,秒杀时时间点是固定的,服务器只在很短的实际内有高并发;一般的话我们都会跑 24 小时的稳定性测试;

三、压测场景(贴合公司业务情况)

基准压测场景

相当于我们只会测一个功能,可以理解成比如说测游戏的一个功能。比如说登录或者说加好友系统,主要先是会做这种基准测试,相当于我们先只会测一个单独的功能,就是针对单个模块去测看一下有没有存在所谓的一些性能瓶颈或者说 bug 之类的。

容量压测场景

评估玩家在一天内行为比例情况,根据比例按照流量划分成一个占比,比如说PV1占30%,PV2占20%等等形成一个混合场景的压测,贴近线上真实情况测试;

稳定性压测场景

基于混合容量场景的压测下,去压一定时间,比如12小时、24小时后

四、压测项目类型

新系统压测

根据线上的一个可能在线人数或者预估一个量,会根据这个量压测,然后还会根据这个量会大概可能带一个冗余值再去压一下。

老系统新版本压测

系统已经上线了,后期对它重构或新增功能,这种情况一般会考虑跟之前压的一个版本对比一下新的数据,要求性能与之前差不多或更好,相当于一个基准的对比测试。

新系统性能测试+优化

相当于第一个的一个升级版本,它可能不仅它要测出这个性能,这个能不能达标可能还要加一个调优的一个步骤。可能会测一开始可能测出来看结果,如果不是很满意的话会可能要求进行一个继续优化的一个过程。

五、压力测试工具

LoadRunner、Jmeter、Wrk、Locust

六、游戏压测&非游戏压测

协议

互联网大部分业务协议主要是Http、Https为主,协议格式常见的为Json、表单等

游戏压测协议基础的都是TCP、有的地方会用到UDP(UDP主要用来做实时战斗),UDP升级版本叫KCP以及SCP或自定协议等,数据格式比较常见的就是 probuba

压测模型

游戏在线相当于一个长连接,维持一个心跳;游戏压测中会经常会以这个用户的一个在线作为一个重要的指标。包括像刚才说的一些就是单服一个单个 game server server 节点,那最多能支撑多少玩家在线,等等,这是一个比较重要的一个指标

业务复杂性

例如多人团队,涉及到的协议多种多样,前期工作准备比较复杂。

全链路压测

链路压测这个常见于互联网这个压测里面一个比如说电商什么的都常见于他们,主要是指基于他们实际的一个生产业务我们模拟他们的用户,直接对他们那个生产环境去做了压力。互联网领域在线上环境压测一般只会做读的接口,如果需要去写入数据,会在HTTP请求的header添加标记,能够让线上系统识别,做出流量隔离;

游戏全链路压测分几种环境:

第一个就是单机环境,单机环境相对来说不是很理想,因为它只是一台机器,能承载的用户比较少,他可能不能测到那种多服务的情况。

第二个就是模拟我们那个一个生产环境,去部署一个小规模的一个多相当于多节点的一个。它可能有多排服务器,可能比如说一台 game server 一台那个网关,或者说一台那个什么城市服或者说其他的服务,相当于我们去布一个最小的多服期的架构。这样的话环境肯定是比那个单机要好得多,因为它是相当于一个线上环境的最小的模型。这样的话我们也能相当于你可以多测到一些多个不同的节点的一些交互。

第三个可能完全模拟生产环境去部署一套测试环境。这个的话是相对于说比较真实的,因为机器数量包括机器数量规则都是比较细类似。然后这个的话有个缺点,成本比较高,因为线上服务器其实已经很贵了,然后你再布一套一模一样的测试环境,它相当于这少两分钱,所以说相当于成本比较高。

第四个生产环境压测,一般只有在那个还没开户前相当于公测前,就可以做一波这种相当于你直接生产环境压测;游戏领域暂时还没有;

七、协议&网络层

 

====================================分割线==================================

八、游戏压测概念

 

关键指标

QPS

相当于每秒钟我们能处理的一个请求的数量,包括接口还有服务他要能达到的一个每秒钟的处理的

在线人数

单服务能够承载多少人在线

RT(Response Time)

一般来说我们要求服务器就是接口的响应时间一般是要小于 500 毫秒的

超时率/报错率(Timeout/Error)

超时率就是指有时候如果服务器处理不过来的,它没法在规定时间内返回它那个响应时间,这样的话我们会把它算作超时。

报错率因为它服务器应该可能会有一些内部错误可能会报错,有可能 500502 之类的,各种小 TTV 0 有各种的报错码。一般来说我们就要求这个事物的成功率最好是100%,当然也会允许一定的报错,一般可能是千分之一或者万分之一。

服务器性能指标(CPU/内存/流量/数据库)

比如说 CPO 、内存还有流量,可能数据库的一些指标,这些都就是我们压测过程中需要实时关注的一些东西。然后在长时间的压测过中,我们也需要去拉一些历史的指标数据,然后从而发现那个服务器这边的一个水位有没有异常之类的。一般来说 CPU 的话要小于 70% 左右,内存的话也是小于70%,而且不能有内存泄露。流量的话一般是会跟一些竞品或者说历史版本做对比,要求每次的流量能不能那个超过上次太多,不能有一个异常的增长。然后数据库也是不能有你比如说慢查询之类的东西,那些错误。

游戏压测验证

交互实时性和数据量:

•CPU处理能力:包括加解密、打包解包、多人同屏战斗、视野搜索、数据遍历、物理碰撞等

•内存稳定性/内存泄漏:LRU、副本加载、地图加载、内存申请和释放

•网络吞吐能力:视野更新、多人同屏移动战斗、帧同步、聊天、广播

•数据库吞吐能力:注册、批量读写、结算回写、定期cache数据落地等

游戏常见压测场景

 

游戏服务器常见问题

 

九、压测流程

 

需求对接

压测模型评估

•历史经验

•其他同类型项目数据

•内测/删档测试数据

•DAU预估生产环境业务比例估算

十、简单压测实践步骤

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到