zoukankan      html  css  js  c++  java
  • jmeter压力测试

    Jmeter既可以接口测试也可以做性能测试,下面讲一下使用jmeter做压力测试,压力测试就是多个用户同时操作系统,即设置并发,并发运行时间。

    压力测试一般分单场景和多场景,单场景就是压测单个接口,多场景就是同时压测多个有数据关联的接口。

    需求确认

    在压测前,要确认压测的功能和指标,一般需要确认下面几个问题:

    1、并发数是多少?

    2、TPS(服务器每秒钟处理的请求数)目标是多少?响应时间有什么要求?

    3、接口参数固定还是随机化?

    压力测试的设置

    压力测试的步骤与接口测试相同:1)添加线程组 2)添加http请求 3)在http请求中写入url、路径、请求方式、参数等,进行一系列的请求设置(参数化、关联等) 4)添加监听器  5)运行脚本,查看结果

    压测主要设置的就是步骤1)线程组有关的内容,其中循环次数并不会改变并发数,只是延长了并发时间。总请求数=线程数*循环次数

     

    图1

    压测结果查看

    一般在线程组上添加聚合报告来查看和分析压测结果:

     

    图2

    聚合报告内容如下:

    图3

    压测结果分析

    1、有错误发生,需要与开发确认,是否允许错误的发生或者错误率允许在多大范围内

    2、压测结束,登录响应的web服务器查看CPU等性能指标,进行数据分析

    3、最大的tps:不断增加并发数,加到tps达到一定值开始出现下降时,那么这个值就是最大的tps

    4、最大并发数:一般不断增大请求,直到响应请求超时时,可认为该值为最大并发数

    5、压测过程出现性能瓶颈,若压力机管理器查看到cpu、网络和内存等都正常,未达到90%以上,则可以说明服务器有问题,压力机没有问题

    6、影响性能的考虑点包括:数据库、应用程序、中间件(tomcat、nginx)、网络、操作系统等方面

    Linux下运行jmeter压力测试

    用windows平台测试时,会受到网络条件的影响,导致测试结果不够准确,尤其在高并发情况下,需要能够精准的测试请求的响应时长,对于网络的要求更加苛刻,此时,可以考虑在linux服务器端安装jmeter进行测试。

    在linux下安装jmeter,推荐播客:http://blog.csdn.net/zhemeteor/article/details/51315874

    我们可以现在windows上先把脚本做好,再到linux底下运行即可。

    例如:jmeter -n -t test1.jmx -l logfile1.jtl

    常用命令参数:

    -n:非GUI模式下运行jmeter

    -t:要运行的jmeter测试脚本文件,test1.jmx就是做好的jmeter脚本

    -l:记录结果的文件,logfile1.jtl就是测试结果文件

    -r:启动远程服务

    -H:设置jmeter使用的代理主机

    测试结果文件可以直接导入到查看结果树或者聚合报告下

    Jmeter添加负载机

    在压力测试过程中,可能并发数过大,一个机子启动不了,可以使用多个机子一起来并发。此时就需要添加负载机。

    1、添加负载机的步骤

    1、先在其他的负载机(另外的电脑)上启动jmeter-server。Windows机子作为压力机的话,运行jmeter-server.bat;linux、mac作为压力机的话,运行jmeter-server.sh

    2、修改主控机jmeter的bin目录下的配置文件jmeter.properties,找到remot_hosts,然后把负载机的ip加入到里面就好了,别忘记写端口号

    图4

    默认jmeter-server的端口号是1099,如果说负载机上的端口号改了,那么你在这里也得改

    4、启动时候选择远程全部运行即可

    2、负载运行结果说明

    使用远程负载进行压测,总请求数=线程数*循环次数*运行机个数。如下,线程组设置如下图5,负载机设置如下图6,有两个机器会运行脚本,每个机器都运行2*2次,即总请求数为2*2*2,如图7

     

    图5

     

    图6

     

    图7

    使用远程负载运行的请求,查看结果树的响应数据是空的,如上图7。我们可以通过在请求下添加断言,或者直接用聚合报告来查看请求是否正确。

    当请求本身是正确的,故意将断言的响应数据写错的话,就可以看到请求的响应数据啦,如图8

     

    图8

    3、注意事项

    1、            负载机和控制机的jmeter版本保持一致,否则有时会报如下错(当然不排除别的可能也会报如下错);有时是负载机不会运行脚本,也不报任何错。

     

    图9

     

    2、            需要控制机也运行脚本时,配置文件中remote_hosts的127.0.0.1的IP后面也要加上端口号“:1099”,并且在控制机运行jmeter-server.bat,否则会报如图10的错;不需要控制机运行脚本时,直接将remote_hosts的127.0.0.1删除,只留下负载机IP,这样就只有负载机在运行脚本。

    图10

  • 相关阅读:
    线程3 线程池和文件下载服务器
    线程 2
    线程 1
    线程间操作
    编写高质量的代码-------从命名开始
    基于.NET平台常用的框架整理
    消息队列
    我是一个线程
    linux 网络命令
    css hack比较全 --- 转
  • 原文地址:https://www.cnblogs.com/ruijie/p/8615215.html
Copyright © 2011-2022 走看看