压力测试的一些基本概念
这个系列的博客会从概念开始,一步步熟悉压测的流程和目的。包含常用的工具、压测的指标以及真实的项目案例。闲言少叙,我们马上开始吧~
压测是什么
压测(压力测试),是确立系统稳定性的一种测试方法
,通常在系统正常运作范围之外进行,以考察其功能极限和隐患。
压测主要检测服务器的承受能力,包括用户承受能力
(多少用户同时玩基本不影响质量)、流量承受
等。
为什么要压测
压测的目的,是通过模拟真实用户的行为,测算出机器的性能
(单台机器的 QPS),从而推算出系统在承受指定用户数(例如100W)时,需要多少机器能支撑得住
。
压测是上线前,针对未来可能达到的用户数量的一次预估(提前演练),压测以后通过优化程序的性能或准备充足的机器,来保证用户的体验
。
名词解释
压测类型
压测通常分为以下几个类型:
-
压力测试(Stress Testing)
也称之为
强度测试
,目的是测试一个系统的最大抗压能力
,在强负载(大数据、高并发)的情况下,测试系统所能承受的最大压力,预估系统的瓶颈。 -
并发测试(Concurrency Testing)
通过模拟很多用户同一时刻访问系统,或对系统某一个功能进行操作,来测试系统的性能,从中发现问题(并发读写、线程控制、资源争抢)。
-
耐久性测试(Configuration Testing)
通过对系统在
大负荷的条件下长时间运行
,测试系统、机器的长时间运行下的状况,从中发现问题(内存泄漏、数据库连接池不释放、资源不回收)。
常用名词
压测过程中还有一些常用的名词,解释如下:
-
并发(Concurrency)
一个处理器
同时处理多个任务的能力(逻辑上处理的能力)。 -
并行(Parallel)
多个处理器
或者是多核的处理器
同时处理多个不同的任务(物理上同时执行)。 -
QPS(每秒钟查询数量 Queries Per Second)
服务器
每秒钟处理请求数量
(req/sec 请求数/秒 一段时间内总请求数/请求时间)。 -
事务(Transactions)
用户一次或者是
几次请求的集合
。 -
TPS(每秒钟处理事务数量 Transaction Per Second)
服务器
每秒钟处理事务数量
(一个事务可能包括多个请求)。 -
请求成功数(Request Success Number)
一次压测中,请求成功的数量。
-
请求失败数(Request Failures Number)
一次压测中,请求失败的数量。
-
错误率(Error Rate)
压测中,
请求成功的数量与请求失败数量的比率
。 -
最大响应时间(Max Response Time)
一次压测中,从发出请求或指令系统做出的反映(响应)的最大时间。
-
最少响应时间(Minimum Response Time)
一次压测中,从发出请求或指令系统做出的反映(响应)的最少时间。
-
平均响应时间(Average Response Time)
一次压测中,从发出请求或指令系统做出的反映(响应)的平均时间。
性能指标
-
CPU利用率(CPU Usage)
CPU 利用率分
用户态
、系统态
和空闲态
,CPU 利用率是指:CPU 执行非系统空闲进程的时间与 CPU 总执行时间的比率。 -
内存使用率(Memory usage)
内存使用率指的是此进程所开销的内存。
-
IO(Disk input/ output)
磁盘的读写包速率。
-
网卡负载(Network Load)
网卡的进出带宽,包量。
访问指标
-
PV(页面浏览量 Page Views)
一定时间范围内(时间范围可以是一天、一个月等自定义的时间段),用户每打开 1 个网站页面,记录 1 个 PV。用户多次打开同一页面,PV 值累计多次。
-
UV(网站独立访客 Unique Visitors)
一定时间范围内(时间范围可以是一天、一个月等自定义的时间段),通过互联网访问、流量网站的自然人。相同访客多次访问网站,只计算为 1 个独立访客。
如何计算压测指标
首先要明确一点,我们需要有目的的进行压测。也就是这次压测我们需要达到什么目标?(如:单台机器的性能为 100 QPS ?网站能同时满足 100W 人同时在线)。
然后可以通过以下计算方法来进行计算:
压测原则
:每天 80% 的访问量集中在20%的时间里,这 20% 的时间就叫做峰值
;- QPS公式:( 总PV数
*
80% ) / ( 每天的秒数*
20% ) = 峰值时间QPS - 机器:峰值时间QPS / 单台机器的QPS = 需要的机器的数量
假设:网站每天的用户数(100W),每天的用户的访问量约为 3000W PV,服务器需要多少 QPS ?
( 30000000*0.8 ) / (86400 * 0.2) ≈ 1389 (QPS)
假设:单台机器的的 QPS 是 69,需要需要多少台机器来支撑?
1389 / 69 ≈ 20