zoukankan      html  css  js  c++  java
  • 压力测试---Jemeter的使用

    一.线程组配置

    线程组相当于有多个用户,同时去执行相同的一批次任务。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。

    Delay Thread creation until needed: 默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。

    Ramp-Up Period:
    线程启动的时间,下图的线程配置,30个线程,1秒启动时间,每个线程执行两次循环。那么每秒会启动一个线程,每次循环执行一个请求。

    取样器错误: 当线程执行取样器失败的时候,要执行的策略

    选项:

    • 继续:忽略错误,是继续执行
    • Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。
    • 停止线程:当前线程停止执行,不影响其他线程正常执行。
    • 停止测试:整个测试会在所有当前正在执行的线程执行完毕后停止
    • 立即停止测试:整个测试会立即停止执行,当前正在执行的取样器如果可能会被中断。

    那么这几个配置控制了,当遇到错误的时候,测试的执行策略,是否会继续执行。

    调度器

    如果不想立即执行,可以通过调度器控制测试执行的开始时间和结束时间。

    • 启动时间:控制测试在某个时间点启动。这个配置会被“启动延迟(秒)”配置覆盖。
    • 结束时间:控制测试执行的结束时间。这个配置会被“持续时间(秒)”配置覆盖。
    • 持续时间(秒):控制测试执行的时间。
    • 启动延迟(秒):控制测试多久后启动执行。

    二.Http请求配置

    新建Http请求,并配置IP,端口,请求超出时间

    三.新建HttpCookie管理器

    由于设置了登陆拦截,所以请求时需要携带cookie信息才能访问接口,所以需要新建一个cookie管理器

    四.监听器配置

    常用的监听器有:查看结果树和图形结果以及聚合报告

    测试代码

    使用Semaphore 将并发访问量为控制在10。

     private int i;
        private final Semaphore permit = new Semaphore(10, true);
    
        @RequestMapping(value="/semapi",method=RequestMethod.GET)
        @ResponseBody
        public Map<String,Object> process() {
    
            Map<String,Object> map = new HashMap<String, Object>();
            try {
                permit.acquire();
                // 业务逻辑处理
                //long start=System.currentTimeMillis();
                System.out.println("============================================================"+i+"调用");
                map.put("code",0);
                map.put("msg","ok");
                Thread.sleep(5000);
                return map;
            } catch (Exception e) {
                e.printStackTrace();
                map.put("code",0);
                map.put("msg","ok");
                return map;
            } finally {
                System.out.println(i+"============================================================释放");
                permit.release();
                i++;
            }
        }
    

     

    测试结果展示

     由于设置了12秒的过期时间,并发量为10,每次执行时会阻塞5秒,结果是总并发为30,20个请求成功,10个请求失败

     

     聚合报告结果

     

     聚合报告参数说明:

    Label:每个JMeter的element的Name值。例如HTTP Request的Name

    #Samples:发出请求数量。如第三行记录,模拟20个用户,循环100次,所以显示了2000

    Average:平均响应时间(单位:)。默认是单个Request的平均响应时间,当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间

    Median:中位数,也就是50%用户的响应时间

    90%Line:90%用户的响应时间

    95%Line:95%用户的响应时间

    99%Line:99%用户的响应时间

    Min:最小响应时间

    Max:最大响应时间

    Error%:本次测试中出现错误的请求的数量/请求的总数

    Throughput:吞吐量。默认情况下标示每秒完成的请求数(具体单位如下图)

    KB/sec:每秒从服务器端接收到的数据量。

  • 相关阅读:
    mybatis-plus中使用FIND_IN_SET函数
    配置devtools热部署
    clickhouse20.12.3参数配置
    mysql5.7的sys系统库应用示例
    单独的线程上创建和显示WPF窗口
    DataGrid 中Combox的使用
    DataGridColumn普通样式和编辑样式
    WPF分辨率适配
    C# 上传文件添加其他参数
    C# 上传文件添加附加参数
  • 原文地址:https://www.cnblogs.com/wangxiayun/p/9294855.html
Copyright © 2011-2022 走看看