开源负载测试神器K6

news2024/12/23 14:09:55

简介:K6是一个强大的开源负载和性能测试工具,用于测试软件系统的性能和可靠性。K6的使用主要是编写测试脚本并运行,这些脚本主要用JavaScript编写,可以使用HTTP,WebSocket等多种协议进行测试。并且易于安装和运行,而且功能丰富,能够进行复杂的负载测试,测试脚本使用JavaScript编写,可以编写复杂的测试逻辑,模拟真实的用户行为,支持查看和修改源代码。

对比:

JMeter: K6更轻量,更易于自动化。而JMeter虽然功能强大,但是界面复杂,学习曲线较陡峭。
Locust: K6支持更多的协议,如gRPC和WebSocket。
Gatling: K6的测试脚本使用JavaScript编写,比Gatling的Scala更通用,更易学。

历史攻略:

容器化CICD+Locust性能压测

locust2.0+教程:011 - Locust Test Report

locust2.0+教程:012 - 压测websocket

locust2.0+教程:013 - 使用FastHttpUser提升压力机性能

locust2.0+教程:014 - 压测XML-RPC

locust2.0+教程:015 - 压测GRPC

sanic:启动和访问

github项目安装地址:

https://github.com/grafana/k6/releases

安装:

# Debian的Linux系统
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61
echo "deb https://dl.bintray.com/loadimpact/deb stable main" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install k6

# Mac
brew install k6

# Windows的 MSI 安装程序
https://github.com/grafana/k6/releases

案例源码sc.js

import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  http.get('http://test.k6.io');
  sleep(1);
}

运行:

# case-1
k6 run sc.js

# case-2
k6 run sc.js -u 100 -d 60s

参数详解:

-u, --vus:同时运行的虚拟用户(VUs)的数量。例如,k6 run --vus 10 script.js将会在执行script.js时使用10个VUs。

-d, --duration:测试的持续时间。例如,k6 run --duration 60s script.js将会运行测试60秒。

-s, --stages:阶段性的负载配置。这允许你在一个测试中改变虚拟用户的数量。例如,k6 run --stages 30s:20,1m:15,30s:10 script.js 将会在前30秒中使用20个VUs,在接下来的1分钟中使用15个VUs,然后在最后的30秒中使用10个VUs。

-i, --iterations:测试执行的总迭代次数。例如,k6 run --iterations 100 script.js将会运行测试直到达到100次迭代。

--paused:开始一个已经暂停的测试。这个选项允许你从K6的HTTP API开始测试。

--no-teardown:禁用teardown阶段。

--no-setup:禁用setup阶段。

-e, --env:设置环境变量。例如,k6 run -e MYVAR=myvalue script.js将会设置一个名为MYVAR的环境变量。

--http-debug:打印调试信息。例如,k6 run --http-debug=full script.js将会打印出所有HTTP请求和响应。

运行结果1:

**图片**

运行结果2:
在这里插入图片描述

被测服务运行情况:

图片

注意事项:

1、K6脚本的执行环境并不是完整的浏览器或Node.js环境,因此不能使用一些特定于这些环境的API。
2、应该尽可能地模拟真实的用户行为。这可能需要生成不同的用户凭证,使用适当的间隔和延迟等。
3、注意观察和解析测试结果。K6生成的详细报告可以帮助理解系统在不同负载下的行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java Web框架,如Spring MVC,是一种用于构建Web应用程序的软件框架:学生考试Web应用程序

文章目录 什么是Java Web框架?MVC模式在Spring MVC中的应用简单的学生考试Web应用程序设置Spring MVC项目创建实体类创建考试实体类创建控制器创建服务层创建数据库创建视图配置Spring MVC实现功能运行应用程序运行应用程序 🎈个人主页:程序员…

MySQL学习笔记3

MySQL的源码编译安装: 1、参考MySQL的源码安装官方文档: 2、源码安装定制选项: 3、源码安装三部曲:配置、编译、安装。 4、软件安装包: mysql-boost-5.7.43.tar.gz 5、安装需求: 安装需求具体配置安装目…

安装gpu版本的paddle和paddleclas

安装gpu版本的paddle python -m pip install paddlepaddle-gpu2.3.2.post111 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html以上支持cuda11.1版本 其他需求可查阅文档在这里 安装paddleclas 1 在虚拟环境中安装所需的Python库: pip inst…

Cortex-M3/M4堆栈

一、Cortex-M3/M4堆栈操作 Cortex-M3/M4 使用的是“向下生长的满栈”模型。堆栈指针 SP 指向最后一个被压入堆栈的 32 位数值。在下一次压栈时, SP 先自减 4, 再存入新的数值,如图所示为堆栈的PUSH操作。 POP 操作刚好相反:先从 …

电子信息工程专业课复习知识点总结:(五)通信原理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 第一章通信系统概述——通信系统的构成、各部分性质、性能指标1.通信系统的组成?2.通信系统的分类?3.调制、解调是什么?有什么用…

MySQL详解六:备份与恢复

文章目录 1. 数据库备份的分类1.1 从物理和逻辑上分类1.1.1 物理备份1.1.2 逻辑备份 1.2 从数据库的备份策略角度上分类1.2.1 完全备份1.2.2 差异备份1.2.3 增量备份 1.3 常见的备份方法 2. MySQL完全备份2.1 完全备份简介2.2 优点与缺点2.3 实现物理冷备份与恢复2.3.1 实现流程…

备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口

早在2021年9月,以太坊创始人Vitalik Buterin就曾提出了EIP-4337(账户抽象)提案,并在去年10月对该提案进一步更新,引发行业的进一步关注。在今年3月,EIP-4337提案正式通过审计,并成为了ERC-4337标…

conda常用指令

常用conda指令 查看当前有哪些环境,有base环境 conda env list 创建环境 # conda create -n 你的环境名 python版本号 # 创建python3.10,名为env虚拟环境 conda create -n env python3.10 激活环境 conda activate env

java框架-Spring-AOP

AOP:动态代理 开发步骤: 导入aop模块定义业务逻辑类定义切面类; -. 切面类标注:Aspect -. 切面类注解: Before: 前置通知, 在方法执行之前执行 After: 后置通知, 在方法执行之后执行 。 AfterRunning: 返回通知, 在方法返回结果之…

[杂谈]-快速了解半波和全波整流

快速了解半波和全波整流 文章目录 快速了解半波和全波整流1、滤波2、半波整流器3、全波整流器4、常见问题 整流器是一种将交流信号转换为脉动直流信号以及将交流电转换为直流电的电子电路。 我们日常生活中几乎所有的电子项目都会用到它。 根据周期传导,本文我们介绍…

【Python】ModuleNotFoundError: No module named ‘Crypto‘

今天在使用一个新的库Crypto时发生了报错 Crypto安装成功~ 导入Crypto模块也没有问题 运行时却发生了报错: 没有这个模块? 我明明安装成功了,为什么报错没有这个库呢? 于是我去查看了一下是不是没有安装上呢? 为什么…

sql注入挖掘

出现的条件 只要是和数据库有交互 没有过滤拼接的sql语句可以执行 判断 这个是在url筐里的

想要精通算法和SQL的成长之路 - 双指针【数组】

想要精通算法和SQL的成长之路 - 双指针【数组】 前言一. 合并两个有序数组二. 删除有序数组中的重复项 II 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 合并两个有序数组 原题链接 抓住重点信息: 两个数组都是非递减顺序排列。num1数组,末尾包…

在Bat To Exe Converter,修改为当异常结束或终止时,程序重新启动执行

在Bat To Exe Converter,修改为当异常结束或终止时,程序重新启动执行 .bat中的代码部分: .bat中的代码echo offpython E:\python\yoloProjectTestSmallLarge\detect.pypause,我想你能帮在Bat To Exe Converter,修改成…

JAVA入坑之嵌套类

一、嵌套类入门 1.1概述 Java嵌套类是指在一个类中定义另一个类的一种方式,它可以提高代码的可读性、可维护性和封装性。Java嵌套类分为两种类型:静态嵌套类和非静态嵌套类。 静态嵌套类:Static nested classes,即类前面有static修饰符 非静…

【进阶C语言】字符串与内存库函数认识与模拟实现

本章内容大致目录: 1.strlen函数 2.strcpy函数 3.strcmp函数 4.strcat函数 5.strstr函数 6.strtok函数 7.strerror与perror函数 8.字符操作函数 9.内存操作函数 10.总结 以上函数均属于库函数,有的函数则会介绍如何模拟实现。 一、strlen函数…

conda创建虚拟环境安装aix360

目录 创建虚拟环境查看已有虚拟环境进入所创建的虚拟环境查看已安装的程序查看已安装的python模块配置镜像pipconda 安装aix360将环境添加到jupyter删除虚拟环境 创建虚拟环境 建议装python3.7python3.7python3.7python3.7python3.7python3.7python3.7python3.7python3.7pytho…

YTM32的LIN通信协议引擎LinFlexD外设模块详解

YTM32的LIN通信协议引擎LinFlexD外设模块详解 文章目录 YTM32的LIN通信协议引擎LinFlexD外设模块详解LINFlexD外设简介LINFlexD工作机制初始化主机模式从机模式错误状态标志位超时错误(Timeout Error)ID过滤机制接收器检测帧间隔段和帧间隔段分隔符产生波…

[游戏开发][Shader]GLSLSandBox转Unity-CG语言

官网 GLSL Sandbox Galleryhttps://glslsandbox.com/ 屏幕坐标计算 fragCoord与_ScreenParams mat2矩阵转换 vec2向量 在GLSL里mat2(a, b, c, d)函数返回vec2但是在CG语言里 没有mat2函数,用下面的值替换mat2方法vec2(a * 1. c * 1., b * 1. d * 1.);举例&…

一台电脑远程内网的另外一台电脑,禁止远程的电脑连接外网,只允许内网连接

一台电脑远程内网的另外一台电脑,禁止远程的电脑连接外网,只允许内网连接 1.找到右下角网卡图标,右键图标选择“打开网络和共享中心”。 3、点击“更改适配器设置”。 4、右键正在使用的网卡“本地连接”打开属性 5、找到“internet协…