- commend+空格 打开终端,安装k6
brew install k6
- 验证是否安装成功
k6 version
- 设置日志级别为debug
export K6_LOG_LEVEL=debug
- 执行脚本(进入脚本所在文件夹下)
`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 会话。