zoukankan      html  css  js  c++  java
  • Jmeter接口压力测试

    Jmeter下载

    下载地址:
    https://jmeter.apache.org/download_jmeter.cgi

    环境配置

    下载后解压zip到任意目录,然后配置环境变量
    变量名JMETER_HOME,变量值F:apache-jmeter-4.0
    在变量名CLASSPATH新增

    %JMETER_HOME%libextApacheJMeter_core.jar;
    %JMETER_HOME%libjorphan.jar;
    %JMETER_HOME%liblogkit-2.0.jar;

    在Path新增

    %JMETER_HOME%/bin 

    启动

    然后启动cmd,输入F:apache-jmeter-4.0injmeter.bat

    也可以进入到安装包bin目录下启动jmeter.bat

     启动后:

     jmeter的主界面如下:

    所需的api参数

    我们现在准备对以太坊的jsonrpcapi接口进行测试
    地址是:
    http://192.168.10.131:8545
    http请求头部配置:
    Content-Type:application/json
    请求内容:

    {
        "jsonrpc":"2.0",
        "id":1,
        "method":"eth_getBlockByNumber",
        "params":["0x331f75",true]
    }

    创建测试用例

    创建线程组

    在测试计划中右键弹出菜单,添加-》Threads(Users)-》线程组

     线程组的参数配置

    线程属性中,Ramp-Up Period(in seconds),间隔多长时间启动1个线程,直到创建100个线程,如果为0的话,则在开始测试后立刻创建100个线程
    可以选中“调度器”,设置需要持续测试的时间,

    设置http请求头部
    在通常编写的api中,是需要配置http请求头部的,在jmeter中也由相关的设置,
    在线程组单击右键出现菜单栏,添加-》配置元件-》HTTP信息头管理器

     添加api中需要的头部配置信息

    设置http请求默认值

    http请求默认值的设置,可以设置请求的服务器,其他环境下的http请求只需添加对应的子路径即可完成测试,
    方便测试环境与生产环境之间的切换

     一般设置好服务器地址即可

    设置http请求

    右键点击“线程组”,出现菜单,添加-》Sampler-》HTTP请求

     HTTP请求的路径,本次测试并未填写,可根据实际情况添加
    在BodyData,中填入需要请求的参数,这里以太坊的jsonrpc-api,需要请求的参数是json格式的

    {
        "jsonrpc":"2.0",
        "id":1,
        "method":"eth_getBlockByNumber",
        "params":["0x331f75",true]
    }

    为http请求添加查看结果树

    右键点击“http请求”(就是之前添加的http请求项),添加-》监听器-》查看结果树
    可在此页面中查看每次的api请求过程以及结果,方便后期分析

    为http请求添加Summary Report

    右键点击“http请求”,添加-》监听器->Summary Report
    可在此页面中查看报告

     测试完成之后,可以查看每个api请求过程及结果

     以及综合报告

    综合报告各个参数指标说明

    Label:取样器/监听器名称

    Samples :事务数量

    Average:平均一个完成一个事务消耗的时间(平均响应时间)

    Min:最小响应时间

    Max:最大响应时间

    以上单位都是ms

    Std.Dev:偏离量,越小表示越稳定

    Error %:错误事务率

    Throughtput:每秒事务数,即tps

    KB/sec:网络吞吐量

    压力测试

      压力测试分两种场景:一种是单场景,压一个接口的;第二种是混合场景,多个有关联的接口。压测时间,一般场景都运行10-15分钟。如果是疲劳测试,可以压一天或一周,根据实际情况来定。

    压测任务需求的确认

    压测前要明确压测功能和压测指标,一般需要确定的几个问题:

    1. 固定接口参数进行压测还是进行接口参数随机化压测?
    2. 要求支持多少并发数?
    3. TPS(每秒钟处理事务数)目标多少?响应时间要达到多少?
    4. 压服务器名称还是压服务器IP,一般都是压测指定的服务器

    压测设置

    1. 线程数:并发数量,能跑多少量。具体说是一次存在多少用户同时访问
    2. Rame-Up Period(in seconds):表示JMeter每隔多少秒发动并发。理解成准备时长:设置虚拟用户数需要多长时间全部启动。如果线程数是20,准备时长为10,那么需要10秒钟启动20个数量,也就是每秒钟启动2个线程。
    3. 循环次数:这个设置不会改变并发数,可以延长并发时间。总请求数=线程数*循环次数
    4. 调度器:设置压测的启动时间、结束时间、持续时间和启动延迟时间。

    压测结果查看

      运行完后,聚合报告会显示压测的结果。主要观察Samples、Average、error、Throughput。

    1. Samples:表示一共发出的请求数
    2. Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms)
    3. Error%:测试出现的错误请求数量百分比。若出现错误就要看服务端的日志,配合开发查找定位原因
    4. Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。

    压测结果的分析

    1. 有错误率同开发确认,确定是否允许错误的发生或者错误率允许在多大的范围内;

    2. Throughput吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;

    3. 压测结束,·登陆相应的web服务器查看CPU等性能指标,进行数据的分析;

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

    5. 最大的并发数:最大的并发数和最大的tps是不同的概率,一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
    6. 压测过程出现性能瓶颈,若压力机任务管理器查看到的cpu、网络和cpu都正常,未达到90%以上,则可以说明服务器有问题,压力机没有问题。
    7. 影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面。

    jmeter在linux下进行压力测试

      1. jmeter 在linux安装 
          简单说下,就是要先安装jdk,同时再配置环境变量,最后再上传jmeter压缩的安装包,在linux下解压完安装包就可以使用了。推荐博客:http://blog.csdn.net/zhemeteor/article/details/51315874

      2. jmeter在linux运行 
        进入jmeter下的bin目录下运行脚本,未配置jmeter环境变量的条件下,运行的命令:

        ./jmeter -n -t a.jmx -l res.jtl

        其中a.jmx是准备好的jmeter脚本,res.jtl是测试结果文件,测试结果文件可以导入到jmeter察看结果树下查看。

  • 相关阅读:
    jQuery同步Ajax带来的UI线程阻塞问题及解决办法
    jQuery的deferred对象详解
    原生js,jquery ajax请求以及jsonp的调用
    vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件
    js判断手机或Pc端登陆.并跳转到相应的页面
    移动端touch事件封装
    坦然面对:应对前端疲劳
    webpack2 项目
    PPK提供的浏览器类型及版本检测方法
    2013年五大主流浏览器 HTML5 和 CSS3 兼容性大比拼
  • 原文地址:https://www.cnblogs.com/datacenter/p/11571419.html
Copyright © 2011-2022 走看看