进程:程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。通俗来说,进程就是程序的一次执行过程。我们在电脑上打开很多应用,每一个应用就可以看作是一个进程。
线程:一个进程中可以包含许多线程,线程中所使用的资源都来源于进程。
性能测试环境必备条件:
- 网络要求
- 内网、外网独立分开,不要跨内网外网(云服务器除外)
- 使用有线网络,不要用wifi网络(特别是在大并发量时,不要用wifi网络)
- 服务器环境
- 与生产环境硬件配置相同的服务器及集群
- 功能测试与性能测试不能共用一套环境
性能测试步骤:
- 性能测试准备
- 需求分析
- 确定性能指标
- 熟悉产品架构/框架
- 微服务数据流向
- 编写测试用例、及确定测试场景
- 搭建性能测试环境
- 工具选型与准备
- 被测系统环境搭建(应用服务器,数据库数据)
- 网络配置
- 性能测试脚本开发
- 性能测试脚本执行
- 结果分析与调优
- 分析依据:结果图表
- 分析思路:服务器硬件瓶颈 > 网络瓶颈 > 服务器os瓶颈(参数配置、数据库、web服务器) > 应用瓶颈(sql语句、数据库设计、业务逻辑、算法)
- 测试报告与结果跟踪
性能测试相关概念
性能测试
- 狭义:通过工具,找出或获取系统在不同工况下的性能指标
- 广义:负载测试、压力测试、容量测试、稳定性测试等
负载测试:逐步增加系统负载,测试系统性能变化,并最终确定系统所能承受的最大负载区间。 - 关键词:逐步增加并发用户数
- 目的:找出最大并发量
压力测试:在一定的性能压力下,持续运行比较长的时间(小时),观察系统服务及资源使用情况 - 关键词:较大压力 + 较长时间
- 目的:测试服务器的稳定性
可靠性测试 / 稳定性测试:同压力测试,只是压力比较小
容量测试:在一定的软硬件条件下,在数据库不同数量级数据量的情况时,对系统中读写较多的业务进行测试,从而获取不同数据量级下的性能指标 - 关键词:不同数量级
- 数据量尽量与生产保持一致
测试顺序- 先做负载测试,得到最大并发用户数区间。
- 再做性能测试,得到最大并发用户数具体值和对应的指标。
- 如果服务器有不稳定的问题,做压力测试
性能测试指标
- 并发
- 狭义:同一时间点,发起相同的请求
- 广义:同一时间点,发起相同或不同的请求
- 并发用户数(并发量):同一时间点,发起请求的用户数,在Jmeter中指线程数(一般jmeter单台电脑可支持1000-1500并发)
- 事务:在Jmeter中,默认一个取样器的一个请求,为一个事务。也可以通过事务控制器,控制多个取样器,为一个事务
- TPS(Transaction Per Second):服务器每秒处理的事务数。衡量服务器最重要的指标。
- 响应时间:从发起请求到收到请求响应的时间。包括:发起请求网络传输理时间 + 服务器处理时间 + 返回响应网络传输时间。
- 得到真正的服务器处理时间,需要降低网络传输时间,要具备良好的网络条件(使用网线,不用wifi)
- 网络:除做视频、直播、文件存储的业务,其它业务网络瓶颈的存在率较低
- 网络带宽指每秒传输的数据量
- 单位:Mb/s
- 换算:1B=8bit,例:100Mb/s带宽换算为实际网速,100Mb/s = 100 / 8 MB/s = 12.5 MB/s,12.5MB/s = 12.5 * 1024 KB/s = 12800 KB/s
- 吞吐量:单位时间内处理的请求数量(事务/s)。在没有网络瓶颈和并发用户数不变时,吞吐量=TPS。吞吐量是衡量网络的重要指标。
- 吞吐率:单位时间内传输多少KB的数据量,KB/s。
- QPS(Query Per Second):每秒查询的次数
- RPS(Request Per Second):每秒请求的次数
- HPS(Hit Per Second):每秒点击的次数
资源利用率
- CPU
- Memory
- I/O
ps:一般不超过80%
性能测试策略:缓起步,持续时间长,快结束
- 如果起步过快,如:ramp-up为1s,线程数为200。有可能在1s内无法产生200个线程数,从而导致线程数达不到200。如果产生了200个线程,也可能向服务器发起瞬间请求过大,造成服务器异常
- 如果结束慢,会拉低TPS,减少整个过程中对并发数的影响
- 如果瞬间结束,不可中断的请求会因为时间太短被强制结束,会导致出现报错