jmeter教程(二十):性能测试执行及结果分析

做性能测试,先是根据策略编写脚本,然后才是执行脚本,现在我已经编写好了脚本,一个最简单的脚本

然后保存,运行,在察看结果树里,可以看到正确的响应结果

现在,启一个线程让这个脚本一直循环运行,查看运行情况,因为是循环运行,HTTP请求,会执行很多次,而这些结果都在察看结果树里显示出来,就不是很好,所以在察看结果里里勾上,只显示错误的请求信息

然后线程组配置成永远循环,调度器设置成60秒,我这里只是演示,就不去跑10分钟了

配置好保存,清除之前的结果,之后就开始运行

右上角,小框框里面显示的是脚本的运行时间,小三角形前面的数字,代表jmeter运行过程中的异常数,这个异常数和脚本里的错误是两码事。比如连接不上服务器,这里就会有异常。小圈圈前的0/1代表当前正在运行的线程数和脚本运行中的最大线程数,因为现在脚本已经停止运行了,所以没有线程在运行,所以前面就是0。而且我的脚本运行时,只启了一个线程,所以最大线程数就是1。在察看结果树里,没有结果输出,代表没有错误的请求,重点看聚合报告

Label:是请求的名称

#Samples:在脚本运行过程中,一共发了多少个请求

Average:平均响应时间,服务器处理一个请求需要多少时间的平均值,单位:毫秒

Median:响应时间的中间值,就是所有请求的响应时间从小到大排个序,正中间的那个值是多少

90%Line:响应时间从小到大排序,在第90%位置处的值是多少,比如一共发了10000个请求,那么就是第9000个的值

95%Line、99%Line同上

Min:最小响应时间,就是所有请求中响应时间最短的那一个

Max:最大响应时间,就是所有请求中响应时间最长的那一个

Error %:错误率,错误请求占所有请求的比率是多少

Throughput:这个就是常说的TPS了,也就是中文常说的吞吐量。代表的是服务处理请求的能力,服务器在1秒之内能处理多少个请求。

最后面两个就是每秒接收数据量和发送数据量,不过这两个值,有些情况下会没有

因为跑的时间比较短,再跑长点时间,TPS可以到1000。因为我这个框架,业务比较简单,而且数据库里的数据也非常少,所以响应非常快。通过响应时间,我们可以推算出服务器一个线程,在1秒内可以处理多少个请求。比如这里是1毫秒,那么服务器一个线程,1秒是可以处理1000个请求的。不过呢,这个1毫秒是向下取整得来的,显示是1毫秒,而实际上可能是1.2或是1.3毫秒。再通过TPS,就可以推出服务器大致启了多少个线程在处理请求。比如平均响应时间是20毫秒,那么服务器一个线程一秒可以处理50个请求,如果TPS是400,那么就可以推出服务器大概是启了8个线程在处理请求。当然,这个并不是绝对的,尤其是在服务器没有达到极限的时候。接下来,再看服务器的资源使用情况

可以看到,在刚开始发请求的时候,服务器的CPU使用率非常地高,最高的时候达到了75%,因为这个时候,服务器要创建很多线程,线程又要处理业务,所以CPU的使用率就变得很高了。然后,到了后期,线程都创建好了,那么就只有处理业务的消耗,所以CPU的使用率就慢慢的降下来了,并趋于平稳。内存就没有什么可看的了,跑得时间短,如果跑的时间比较长,比如10分钟,而在跑的过程中,一直在增高,那么就要考虑有内存泄露的问题了。而磁盘I/O,因为没有打日志,所以就完全没有了。

1个线程的跑完了,服务器的性能就有了一个基准值。那么就要再加线程跑,现在加到2个线程跑。

清除之前的结果,运行

可以看到2个线程的时候,TPS是1677,相较于1个线程的TPS,没有达到2倍,存在着衰减,当然跑的时间太短,对比的数据,参考性不是很准确。然后,再启3个线程跑:

2个线程TPS是1677,3个线程是1729,只增加了一点点。那么就可以得出结论,服务器的TPS极限就是1700多一点。后面,再增加线程来压,TPS也增长不动,甚至还会出现下降的情况。

现在只是测试了一种情况,还有带参数的情况,只是脚本改一下,测试的过程是差不多的。再然后就是做参数化,让脚本在运行的过程中,不停地改变参数,来查看服务器的的性能,新建一个记事本,内容如下

然后,在脚本里引入这个文件,读取里面的内容做参数

然后线程组,设置启一个线程,循环4次,察看结果树的只显示错误,不勾选,运行一下,看结果

可以看到,4次,每次运行的结果都不一样,然后就是让脚本一直循环,持续运行一段时间,看性能数据

这是启2个线程跑的,可以看到,比之前全是一样的请求时,性能下降了

欢迎加入测试群:91425817,一起讨论测试的那此事。

发布了47 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/kingzhsh/article/details/88618594