Postman

下载软件包

# 官网

启动

测试案例

  1. 创建一个Collections,将接口保存进Collections
  2. 点击Runner,选择需要并发测试的接口
  3. 设置相关参数,点击Run。

Apache Bench

下载软件包

# 官网
https://www.apachelounge.com/
# 软件包
https://www.apachelounge.com/download/VS16/binaries/httpd-2.4.48-win64-VS16.zip

启动

在目录【xxx\Apache24\bin 】下,通过cmd进入命令行界面,启动abs.exe

abs.exe

测试案例

ab [options] [http://]hostname[:port]/path

例如:

-n后面的1000代表总共发出1000个请求,-c后面的500表示采用500个并发(模拟500个人同时访问);后面的网址表示测试的目标URL。

ab -n 1000 -c 500  http://127.0.0.1:8080/test
# 或
abs.exe -n 1000 -c 500  http://127.0.0.1:8080/test
  1. 参数说明

    • -n

      requests Number of requests to perform //本次测试发起的总请求数

    • -c

      concurrency Number of multiple requests to make //一次产生的请求数(或并发数)

    • -t

      timelimit Seconds to max. wait for responses //测试所进行的最大秒数,默认没有时间限制。

    • -r

      Don’t exit on socket receive errors // 抛出异常继续执行测试任务

    • -p

      postfile File containing data to POST //包含了需要POST的数据的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt

    • -T

      content-type Content-type header for POSTing //POST数据所使用的Content-type头信息,如 -T “application/x-www-form-urlencoded” 。 (配合-p)

    • -v verbosity How much troubleshooting info to print
      //设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。

    • -C

      attribute Add cookie, eg. -C “c1=1234,c2=2,c3=3” (repeatable)
      //-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复,用逗号分割。提示:可以借助session实现原理传递 JSESSIONID参数,实现保持会话的功能,如-C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ 。

    • -w

      Print out results in HTML tables //以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。

    • -i

      Use HEAD instead of GET

  2. 测试报告

    • Document Path:测试页面
    • Document Length: 页面大小
    • Concurrency Level: 测试的并发数
    • Time taken for tests:整个测试持续的时间
    • Complete requests:完成的请求数量
    • Failed requests: 失败的请求数量
    • Write errors: 0
    • Total transferred: 整个过程中的网络传输量
    • HTML transferred: 整个过程中的HTML内容传输量
    • Requests per second: 最重要的指标之一,相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值
    • Time per request: 最重要的指标之二,相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值
    • Time per request: 每个连接请求实际运行时间的平均值
    • Transfer rate: 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

JMeter

下载软件包

# 官网
http://jmeter.apache.org/
# 软件包
https://mirrors.bfsu.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.1.zip

启动

在目录【xxx\apache-jmeter-5.4.1\bin 】下,通过cmd进入命令行界面,window下启动 ,双击【 jmeter.bat 】脚本文件

测试案例

  1. 添加本次测试计划

    选中TestPaln,右键–>添加–>Threads(Users)–>线程组,定义名称,例如tiger-test

  2. 设置线程数 (所谓线程数就是并发用户数)

  3. 添加协议及相关配置信息

    选中tiger-test,右键–>添加–>Sampler–>HTTP Request,定义名称,例如tiger-request

    填写接口相关参数

  4. 为线程添加监听器

    选中tiger-request,右键–>添加–>Listener–>查看结果树

    选中tiger-request,右键–>添加–>Listener–>图形结果

  5. 打来日志

    选择选项,勾选日志查看

  6. 启动测试

线程属性

  1. 线程数

    虚拟用户数,假如50

  2. Ramp-Up Period(in seconds)

    虚拟用户增长时长,例如设置为300,也就是说5分钟内,50个用户请求完毕

  3. 循环次数

    一个虚拟用户所多少次测试,例如20,则表示总共执行1000次

  4. ….

代码

public class ConcurrencyTest {// 请求总数public static int clientTotal = 5000;// 同时并发执行的线程数public static int threadTotal = 200;public static AtomicInteger count = new AtomicInteger(0);public static void main(String[] args) throws Exception {// 线程池ExecutorService executorService = Executors.newCachedThreadPool();// 信号量final Semaphore semaphore = new Semaphore(threadTotal);// 计数器闭锁,线程执行一次,计数器减1,直到为0final CountDownLatch countDownLatch = new CountDownLatch(clientTotal);for (int i = 0; i < clientTotal; i++) {executorService.execute(() -> {try {semaphore.acquire();add();semaphore.release();} catch (Exception e) {log.error("exception", e);}countDownLatch.countDown();});}// 等待闭锁减为0,才执行下面的操作countDownLatch.await();// 关闭线程池executorService.shutdown();log.info("count:{}", count.get());}private static void add() {count.incrementAndGet();}
}

模拟高并发测试的几种方式相关推荐

  1. 实现高并发秒杀的七种方式

    引言 商品秒杀-超卖 解决商品超卖 方式一(改进版加锁) 方式二(AOP版加锁) 方式三(悲观锁一) 方式四(悲观锁二) 方式五(乐观锁) 方式六(阻塞队列) 方式七(Disruptor队列) 小结 ...

  2. Spring Boot集成Redis缓存之模拟高并发场景处理

    前言 同样我们以上一篇文章为例子,搭建好环境之后,我欧美可以模拟高并发场景下,我们的缓存效率怎么样,到底能不能解决我们实际项目中的缓存问题.也就是如何解决缓存穿透? Spring Boot集成Redi ...

  3. 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 实际上jmeter可以测试很多不光是http的高并发测试 1.先去Jmeter官网下载Jmeter ...

  4. 解决redis高并发问题的几种思路

    解决redis高并发问题的几种思路 1:布隆过滤器 首先,布隆过滤器能解决绝大部分恶意攻击的请求,比如我们数据库中的id通常都设为自增的,是有一定范围大小的,如果有黑客恶意用数据库中没有的id一直访问 ...

  5. 使用JMeter进行接口高并发测试

    一般的网络接口测试,功能性测试postman较为好用,需要测试高并发的情况下,可以用Jmeter来进行测试,postman是串行,而Jmeter可以多线程并行测试. 官网 Apache JMeter ...

  6. 模拟高并发场景工具:siege

    1.模拟高并发场景 1.1 安装工具:siege wget http://download.joedog.org/siege/siege-latest.tar.gz tar -zxvf siege-l ...

  7. 使用CountDownLatch模拟高并发场景

    import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java ...

  8. 【博客551】实现主备高可用vip的几种方式

    实现主备高可用vip的几种方式 1.keepalived: 注意:要求网络环境有一定要求,需要组播报文不被抑制才可以 具体限制场景:keepalived的限制场景 使用keepalied来实现vip. ...

  9. Maven 跳过测试的几种方式

    在 Maven 对项目进行编译的时候,我们通常可能会希望跳过复杂的测试. 尤其是在开始项目还不是非常稳定的阶段. 命令行中使用 -Dmaven.test.skip=true 在命令行,只要简单的给任何 ...

最新文章

  1. 符合RESTful的接口规范
  2. Tensorflow—Fetch and Feed
  3. 机器学习算法加强——数据清洗
  4. 【Python】手把手教你用Python做一个图像融合demo,小白可上手!
  5. bootstrap源码分析之Carousel
  6. [攻防世界 pwn]——实时数据监测
  7. Spring构造注入重载
  8. .NET Core 实现定时抓取博客园首页文章信息并发送到邮箱
  9. iOS开发之Masonry框架-使用方法须知
  10. 你会给别人提反馈吗?
  11. python时间序列预测不连续怎么办_python – 不连续的时间序列在x轴上绘制日期
  12. 安装ubuntu出现花屏_电脑显卡花屏怎么办?电脑独立显卡花屏的原因和解决方法...
  13. 树状数组 / 二维树状数组
  14. 几米的一段话,献给所有小郁闷的人
  15. 七日瘦身汤绝妙配方 - 生活至上,美容至尚!
  16. 捷联惯导算法 matlab,捷联惯导算法与组合导航原理资料及更正
  17. 2015游戏蛮牛——蛮牛杯第四届开发者大赛 创见VR未来开启报名
  18. CVPR 2021 | 自监督学习新思路!S2-BNN:基于蒸馏的自监督学习算法
  19. 对英文单词的词性标注
  20. JavaFX创建八边形

热门文章

  1. 一分钟搞懂WebWorker
  2. 物联网的基本功能和四种形态
  3. 安卓9 怎么运行老程序_孩子老走神怎么办?9张图教你培养孩子的注意力!
  4. java中字符型常量和字符串常量的区别
  5. 计算机函数公式减法,Excel电子表格中的减法函数是什么啊?(excle算一列的减法函数)...
  6. php什么是耦合关系,耦合与解耦 · iThinkphp完全开发手册 · 看云
  7. 图像处理与机器视觉_第二篇
  8. stat命令查看jvm的GC状况
  9. Linux C/C++编程之(十九)进程组守护进程
  10. mixin机制 vue_Vue Mixin用法