一.线程组配置

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

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:每秒从服务器端接收到的数据量。

压力测试---Jemeter的使用的更多相关文章

  1. Loadrunner&Jemeter进行手机APP压力测试

    一.loadrunner通过代理录制app脚本 随着手机APP的广泛应用,手机应用的使用已占据了大量的市场份额,尤其是优秀的手机APP,动辄用户过千万过亿,对于如此庞大的用户量,我们在开发APP时,也 ...

  2. Jemeter压力测试

    Jmeter教程 简单的压力测试 Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 转载自小坦克:https: ...

  3. 压力测试工具JMeter入门教程

    1.Jmeter 概要描叙 jmeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台.多数情况下是用作压力测试,该测试工具在阿里巴巴有着广泛的使用,估计是不要钱吧,哈哈,功能上来说,整个平台 ...

  4. Apache ab压力测试时出现大量的错误原因分析

    最近有一个测试任务,是测试nginx的并发请求到底能够达到多少的, 于是就用ab工具对其进行压力测试. 这压力测试一执行,问题就来了:发起10000次请求,并发100,错误的情况能达到30%--50% ...

  5. 用jmeter进行多用户并发压力测试 [转]

    近日manager要求对项目进行压力测试,开始对jmeter进行了研究.jmeter是Apache一个开源项目,可对各种项目进行测试,甚至包括junit. 测试要求如下,多用户同时登陆web应用程序, ...

  6. ab和jmeter进行GET/POST压力测试的使用心得和比较

    引言: 互联网服务压测是非常重要的评价方法,ab,webbench,jmeter等都是业界流行的测试工具,ab和webbench作为shell模式下轻量级的测试工具,jmeter则作为有GUI界面的更 ...

  7. 使用wrk进行压力测试

    最近需要对新的服务进行压力测试.比较了ab和jemeter以及wrk.最终选择wrk来作为压力测试工具,可以把cpu压到100%. 官方源码: https://github.com/wg/wrk 安装 ...

  8. 使用Jmeter(三十)针对ActiveMQ JMS POINT TO POINT压力测试(转载)

    转载自 http://www.cnblogs.com/yangxia-test 准备工作 针对JMS类型的Sampler,需要额外的jar包(这里用的是apache ActiveMQ,将下载的AMQ  ...

  9. 压力测试工具JMeter入门教程<转>

    1.Jmeter 概要描叙 jmeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台.多数情况下是用作压力测试,该测试工具在阿里巴巴有着广泛的使用,估计是不要钱吧,哈哈,功能上来说,整个平台 ...

随机推荐

  1. java中发送http请求的方法

    package org.jeecgframework.test.demo; import java.io.BufferedReader; import java.io.FileOutputStream ...

  2. 002使用eop来烧写程序

  3. 洛谷$P2150\ [NOI2015]$寿司晚宴 $dp$

    正解:$dp$ 解题报告: 传送门$QwQ$. 遇事不决写$dp$($bushi$.讲道理这题一看就感觉除了$dp$也没啥很好的算法能做了,于是考虑$dp$呗 先看部分分?$30pts$发现质因数个数 ...

  4. react项目使用antd

    在开始实践之前要确保搭建React单页面开发环境,如果还没有搭建好开发环境的朋友请移步到如何搭建React单页面开发环境. 首先在命令行模式下创建一个React项目(项目名使用小写字母命名):(win ...

  5. Java 从入门到进阶之路(二十一)

    在之前的文章我们介绍了一下 Java 中的日期操作,本章我们来看一下 Java 集合框架中的Collection. 早在 Java 2 中之前,Java 就提供了特设类.比如:Dictionary, ...

  6. 31.用python中的serial向串口发送和接收数据(案例一)

    代码功能说明:1.向串口助手发送十六进制数据:0X01,0X03,0X00,0X00,0X00,0X01,0X84,0X0A: 2.用串口助手向代码发送数据,并将发送过来的数据保存在数据库中,按数据和 ...

  7. echarts更改坐标轴文字颜色及大小

    xAxis: { data: anameArr, axisLabel: { show: true, textStyle: { color: '#c3dbff', //更改坐标轴文字颜色 fontSiz ...

  8. TensorFlow——tensorflow编程基础

    0.tensorflow中的模型运行基础 tensorflow的运行机制属于定义和运行相分离,在操作层面可以抽象成两种:模型构建和模型运行. 在模型构建中的常见概念: 张量(tensor):数据,即某 ...

  9. c++ 快读快输模板

    快读 inline int read() { ; ; char ch=getchar(); ; ch=getchar();} )+(X<<)+ch-'; ch=getchar();} if ...

  10. 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第五节:数据流处理的那些事儿

    为什么说到数据流了呢,因为上一节中介绍了一下异步发送请求.同样,在数据流的处理上,C#也为我们提供几个有用的异步处理方法.而且,爬虫这生物,处理数据流是基础本能,比较重要.本着这个原则,就聊一聊吧. ...