模拟高并发测试的几种方式
Postman
下载软件包
# 官网
启动
测试案例
- 创建一个Collections,将接口保存进Collections
- 点击Runner,选择需要并发测试的接口
- 设置相关参数,点击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
参数说明
-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
…
测试报告
- 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 】脚本文件
测试案例
添加本次测试计划
选中TestPaln,右键–>添加–>Threads(Users)–>线程组,定义名称,例如tiger-test
设置线程数 (所谓线程数就是并发用户数)
添加协议及相关配置信息
选中tiger-test,右键–>添加–>Sampler–>HTTP Request,定义名称,例如tiger-request
填写接口相关参数
为线程添加监听器
选中tiger-request,右键–>添加–>Listener–>查看结果树
选中tiger-request,右键–>添加–>Listener–>图形结果
打来日志
选择选项,勾选日志查看
启动测试
线程属性
线程数
虚拟用户数,假如50
Ramp-Up Period(in seconds)
虚拟用户增长时长,例如设置为300,也就是说5分钟内,50个用户请求完毕
循环次数
一个虚拟用户所多少次测试,例如20,则表示总共执行1000次
….
代码
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();}
}
模拟高并发测试的几种方式相关推荐
- 实现高并发秒杀的七种方式
引言 商品秒杀-超卖 解决商品超卖 方式一(改进版加锁) 方式二(AOP版加锁) 方式三(悲观锁一) 方式四(悲观锁二) 方式五(乐观锁) 方式六(阻塞队列) 方式七(Disruptor队列) 小结 ...
- Spring Boot集成Redis缓存之模拟高并发场景处理
前言 同样我们以上一篇文章为例子,搭建好环境之后,我欧美可以模拟高并发场景下,我们的缓存效率怎么样,到底能不能解决我们实际项目中的缓存问题.也就是如何解决缓存穿透? Spring Boot集成Redi ...
- 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 实际上jmeter可以测试很多不光是http的高并发测试 1.先去Jmeter官网下载Jmeter ...
- 解决redis高并发问题的几种思路
解决redis高并发问题的几种思路 1:布隆过滤器 首先,布隆过滤器能解决绝大部分恶意攻击的请求,比如我们数据库中的id通常都设为自增的,是有一定范围大小的,如果有黑客恶意用数据库中没有的id一直访问 ...
- 使用JMeter进行接口高并发测试
一般的网络接口测试,功能性测试postman较为好用,需要测试高并发的情况下,可以用Jmeter来进行测试,postman是串行,而Jmeter可以多线程并行测试. 官网 Apache JMeter ...
- 模拟高并发场景工具:siege
1.模拟高并发场景 1.1 安装工具:siege wget http://download.joedog.org/siege/siege-latest.tar.gz tar -zxvf siege-l ...
- 使用CountDownLatch模拟高并发场景
import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java ...
- 【博客551】实现主备高可用vip的几种方式
实现主备高可用vip的几种方式 1.keepalived: 注意:要求网络环境有一定要求,需要组播报文不被抑制才可以 具体限制场景:keepalived的限制场景 使用keepalied来实现vip. ...
- Maven 跳过测试的几种方式
在 Maven 对项目进行编译的时候,我们通常可能会希望跳过复杂的测试. 尤其是在开始项目还不是非常稳定的阶段. 命令行中使用 -Dmaven.test.skip=true 在命令行,只要简单的给任何 ...
最新文章
- 符合RESTful的接口规范
- Tensorflow—Fetch and Feed
- 机器学习算法加强——数据清洗
- 【Python】手把手教你用Python做一个图像融合demo,小白可上手!
- bootstrap源码分析之Carousel
- [攻防世界 pwn]——实时数据监测
- Spring构造注入重载
- .NET Core 实现定时抓取博客园首页文章信息并发送到邮箱
- iOS开发之Masonry框架-使用方法须知
- 你会给别人提反馈吗?
- python时间序列预测不连续怎么办_python – 不连续的时间序列在x轴上绘制日期
- 安装ubuntu出现花屏_电脑显卡花屏怎么办?电脑独立显卡花屏的原因和解决方法...
- 树状数组 / 二维树状数组
- 几米的一段话,献给所有小郁闷的人
- 七日瘦身汤绝妙配方 - 生活至上,美容至尚!
- 捷联惯导算法 matlab,捷联惯导算法与组合导航原理资料及更正
- 2015游戏蛮牛——蛮牛杯第四届开发者大赛 创见VR未来开启报名
- CVPR 2021 | 自监督学习新思路!S2-BNN:基于蒸馏的自监督学习算法
- 对英文单词的词性标注
- JavaFX创建八边形
热门文章
- 一分钟搞懂WebWorker
- 物联网的基本功能和四种形态
- 安卓9 怎么运行老程序_孩子老走神怎么办?9张图教你培养孩子的注意力!
- java中字符型常量和字符串常量的区别
- 计算机函数公式减法,Excel电子表格中的减法函数是什么啊?(excle算一列的减法函数)...
- php什么是耦合关系,耦合与解耦 · iThinkphp完全开发手册 · 看云
- 图像处理与机器视觉_第二篇
- stat命令查看jvm的GC状况
- Linux C/C++编程之(十九)进程组守护进程
- mixin机制 vue_Vue Mixin用法