一、性能测试术语
响应时间:一次操作完成的时间,也就是客户端发送请求到服务端后,服务端返回到客户端的响应数据的时间,包含了等待和服务的时间,也包括用来返回结果的时间,响应时间=网络时间+应用程序处理的时间,
2、IOPS
该术语主要是针对数据库的,也就是每秒发生的输入/和输出操作的次数,是数据传输的一个度量方法,用于,IOPS是每秒读和写的次数
3、吞吐量
只要用于业务传输方面,也就是被测系统的执行效率
4、TPS/QPS
TPS统计的是每秒处理的事务,即系统每秒能够处理的事务的 数量,QPS指的是每秒查询率,
5、延时
客户端发送请求后,用来等待服务端返回给客户端返回的响应时间
6、内存泄漏
OOM--->内存泄露---》out of memory 1g
7、使用率
对于服务所请求的资源,
二、调度器
CPU密集型:应用程序执行繁重的计算,通常运行时间比较长,会占用大量的CPU
IO密集型:应用程序执行I/O,计算不多,会占用大量的内存资源
2、抢占式调度
抢占式调度可以理解为在多线程的情况下,各个线程都需要安装操作系统的规则来抢占系统资源的方式来获取系统资源的使用权。如以竞争方式来获取CPU的时间分,时间划分一般是非常的小,所以在这样的情况下,更多感觉是线程的并行的方式在进行,它的调度策略是优先级高的线程更加容易获取资源,所以优先级高的线程在执行效率方面会有可能提高的。案例代码如下:
3、非抢占式调度
非抢占式调度主要值的是在多线程的情况下,系统对各个线程按照一定的排序方式分配系统的资源,而且系统资源分配到一个线程后,就允许该线程一直占用这个资源直到整个线程任务执行结束。但是如果某一个线程出现运算大或者逻辑存在问题,就会导致其他线程一直处于等待中,可能大概率的出现死锁。
4、队列(先进先出)
等待队列
在程序中,都会涉及到等待队列的,不管是同步交互还是异步的交互中,都会涉及它的最大队列,这样设计的核心思想是防止在客户端高并发的情况下服务端在没有队列的情况下出现雪崩以及最终导致服务端出现瘫痪,因此队列等待是非常核心并且是非常有必要的。在等待队列中,测试需要得出如下几个性能数据
(1)队列设置的值是多少?最大可以运行的任务是多少?
(2)要测试到排队的策略机制。也就是说模拟大批量的程序进行排队,然后一个任务执行结束后,队列位置释放一个,等待中的可以立刻进入然后执行,这中间就设计到先进先出还是先进后出,以及线程优先级的设计策略
(3)线程在排队的过程中,设置最大的等待时间是多少,也就是说一个线程不可能永远处于等待中,那么等待多久,还是没到执行的阶段,这个时候服务针对排队等待的线程处理的机制是?这个时间专业术语就是:访问等待时间
(4)那么一个线程完整的时间是由三部分组成的,响应时间:客户端发起请求的时间+访问等待时间+逻辑执行时间+返回给客户端的时间。一般在测试中,可以把每个线程名称设置为uuid,这样它都是独立的,可以依据这个uuid,让开发同学配合输出每个阶段的时间输出,然后就可以得到每个阶段的具体时间了,根据时间再来判断时间是否优化。
5、并发&并行
(1)并行:更多值的是多个线程在并发后,在同一个跑道内是并行的,比如队列大小是20,那么20个任务是并发执行,那么这20个任务也可以理解为是并行的。
(2)并发
指用户线程并发执行但是不一定是并行的,在单核的CPU系统中,可能会交替执行。在具有多核的CPU或多个CPU的系统中
所有的任务并发执行出去后,也会收到操作系统以及调度策略的限制。如ava的程序中,用户线程此时可以维续运行,而垃圾回收线程
可以同时运行于另一个CPU核上,用户线程的运行和垃圾回收线程的运行不会形成干扰
三、线程属性
(1)线程数
一个线程可以理解为对应模拟一个用户,所以线程数越多,那么也就认为可以模拟的用户数越多。
(2)Ramp-Up时间(秒)
该属性指的是所有线程从启动到开始运行的时间间隔,单位是秒,也就是说所有线程在多长时间内开始执行,如线程数设置50,设置的时间为5秒
那么计算的公式为:
每秒执行线程数=线程数/Ramp-Up #如设置的线程数为50,Ramp-up的时间为10,那么也就是说开启执行后,每秒会启动5个线程,如果Ramp-Up设置为0,那么开始执行后,50个线程会立刻启动
四、JMeter性能测试报告
1、在jmeter查看性能测试报告

2、使用外部可视化的查看性能测试报告
(1)在线程组添加一个后置监听器
(2)修改端口

(3)打开网页:http://47.95.142.233:3000/d/Z6Jz03i7k/apache-jmeter-dashboard?orgId=1
(4)登陆进去查看
浙公网安备 33010602011771号