当前位置: 首页 > news >正文

Mac使用K6工具压测WebSocket

  1. commend+空格 打开终端,安装k6
brew install k6
  1. 验证是否安装成功
k6 version
  1. 设置日志级别为debug
 export K6_LOG_LEVEL=debug
  1. 执行脚本(进入脚本所在文件夹下)
`k6 run --vus 100  --duration 10m --out csv=result.csv scri`pt.js 

脚本解释:
当前目录下的script.js脚本,用户数100,持续时间10分钟,运行结果存放到result.csv

script脚本内容

import ws from 'k6/ws';
import { check } from 'k6';
export const options = {vus: 20, // 设置虚拟用户数为50duration: '5m', // 持续运行时间为5分钟
};
export default function () {const url = '';接口地址const idToken = ''; //  id-tokenconst requestBody = JSON.stringify({"msg": "测试", //请求体      });const params = {headers: {'id-token': idToken}};// 建立 WebSocket 连接const response = ws.connect(url, params, function (socket) {// 发送请求socket.send(requestBody);// 接收响应socket.on('message', function (message) {console.log(`Received message: ${message}`);});});// 检查连接是否成功check(response, { 'WebSocket connected successfully': (r) => r && r.status === 101 });
}

成功截图
在这里插入图片描述
失败截图
在这里插入图片描述

字段解释
  • WebSocket connected successfully: 表示 WebSocket 是否成功连接。在这个例子中,连接失败了 58448 次,成功了 130 次。
  • checks: 表示执行的检查数量和通过的检查数量。在这个例子中,执行了 58578 次检查,其中通过了 130 次。
  • data_received: 表示接收到的数据量。这里接收了总共约 27 MB 的数据,平均每秒接收约 45 KB。
  • data_sent: 表示发送的数据量。这里发送了总共约 43 MB 的数据,平均每秒发送约 72 KB。
  • **iteration_duration:**表示每个迭代的持续时间。avg 表示平均持续时间,min 表示最短持续时间,med 表示中位数持续时间,max 表示最长持续时间,p(90) 和 p(95) 分别表示第 90 百分位和第 95 百分位的持续时间。
  • iterations: 表示完成的迭代数量。这里完成了 58578 个迭代,平均每秒完成约 97.52 个迭代。
  • vus: 表示当前运行的虚拟用户数量。这里虚拟用户数量一直保持在 100。
  • **vus_max:**表示虚拟用户数量的最大值。这里最大同时运行的虚拟用户数量为 100。
  • **ws_connecting:**表示 WebSocket 连接中的会话的持续时间统计。与 iteration_duration 类似,提供了连接中会话的平均持续时间、最短持续时间、中位数持续时间、最长持续时间以及第 90 和第 95 百分位的持续时间。
  • ws_msgs_sent: 表示发送的 WebSocket 消息数量。在这个例子中,发送了 130 条消息,平均每秒发送约 0.22 条消息。
  • **ws_session_duration:**表示 WebSocket 会话的持续时间统计,提供了与 ws_connecting 类似的统计信息。
  • ws_sessions: 表示 WebSocket 会话数量。这里共有 58578 个 WebSocket 会话,在测试期间平均每秒完成约 97.52 个 WebSocket 会话。
http://www.lryc.cn/news/306519.html

相关文章:

  • 小程序--vscode配置
  • linux僵尸进程
  • 【web | CTF】攻防世界 Web_php_unserialize
  • Vue3中的select 的option是多余的?
  • 考研408深度分析+全年规划
  • 【算法笔记】ch01_01_0771 宝石与石头
  • jQuery瀑布流画廊,瀑布流动态加载
  • 玩转ChatGPT:参考文献速查
  • [设计模式Java实现附plantuml源码~行为型]算法的封装与切换——策略模式
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • 如何实现一个K8S DevicePlugin?
  • Android LruCache源码分析
  • 如何使用Inno Setup制作Unity构建程序的Windows安装程序
  • linux 面试题
  • 嵌入式中逻辑分析仪基本操作方法
  • ONLYOFFICE 桌面编辑器 v8.0 更新内容详细攻略
  • 2024-2-22 作业
  • 2.1 RK3399项目开发实录-升级固件介绍(物联技术666)
  • Uniapp + VUE3.0 实现双向滑块视频裁剪效果
  • 【算法小讲堂】#1 贪心算法
  • 判断当前shell版本
  • 如何实现两个电脑之间通过以太网(网线)实现文件互传
  • Jenkins 中部署Nodejs插件并使用,并构建前端项目(3)
  • VUE为什么有的属性要加冒号
  • 微信小程序 --- wx.request网络请求封装
  • 通义千问Qwen-7B-Chat Windows本地部署教程-详细认真版
  • 探索C语言位段的秘密
  • 数据库-数据库设计-社交关系
  • YOLO算法改进Backbone系列之:EfficientViT
  • JANGOW: 1.0.1