grafana K6压测

news/2025/2/27 6:27:40

文章目录

    • install and run
    • script.js
      • options
        • 最佳实践
    • report 解析

https://grafana.com/docs/k6/latest/get-started

install and run

  1. install
# mac
brew install k6
  1. 当前目录下生成压测脚本
# create file script.js
k6 new [filename]     # create file ‘script.js’ in the current directory

3 run

k6 run script.js
  1. reports
    默认情况下,k6 将总结结果打印到 stdout 。

script.js

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

export const options = {
  vus: 10,
  duration: '30s',
};

export default function () {
  const res = http.get('http://test.k6.io');
  check(res, { 'status was 200': (r) => r.status == 200 });
  sleep(1);
}

options

https://grafana.com/docs/k6/latest/using-k6/k6-options/reference/

  • vus
    虚拟用户数
  • duration
    持续时间
  • rps
    每秒请求数量

请求总数 = vus * rps * durance(s)

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

export const options = {
  maxRedirects: 4,
  duration: '300s',
  vus: 10,
  rps: 300
};

// stages : 逐步提升/降低 
export const options = {
  stages: [
    { target: 200, duration: '30s' },
    { target: 0, duration: '30s' },
  ],
};

export const options = {
  stages: [
    { duration: '10s', target: 100 },
    { duration: '5m', target: 100 },
    { duration: '10s', target: 0 },
  ],
  rps: 100,
};
最佳实践

VUs太大的情况下, 直接启动所有 VUs 会几乎同时发起请求,导致请求的瞬间激增。这样的突发性负载可能会导致系统未能及时响应,进而出现错误。
改为 分阶段增加 VUs , 系统逐步适应增加的负载

report 解析

默认report

         /\      Grafana   /‾‾/  
    /\  /  \     |\  __   /  /   
   /  \/    \    | |/ /  /   ‾‾\ 
  /          \   |   (  |  ()  |
 / __________ \  |_|\_\  \_____/ 

     execution: local
        script: script.js
        output: -

     scenarios: (100.00%) 1 scenario, 2000 max VUs, 1m15s max duration (incl. graceful stop):
              * default: Up to 2000 looping VUs for 45s over 6 stages (gracefulRampDown: 30s, gracefulStop: 30s)


     ✓ status is 200

     checks.........................: 100.00% 191878 out of 191878
     data_received..................: 160 MB  3.5 MB/s
     data_sent......................: 20 MB   443 kB/s
     http_req_blocked...............: avg=5.84µs   min=0s    med=1µs      max=9.49ms  p(90)=4µs      p(95)=7µs     
     http_req_connecting............: avg=2.71µs   min=0s    med=0s       max=9.43ms  p(90)=0s       p(95)=0s      
     http_req_duration..............: avg=246.16ms min=383µs med=103.16ms max=6.91s   p(90)=617.17ms p(95)=979.14ms
       { expected_response:true }...: avg=246.16ms min=383µs med=103.16ms max=6.91s   p(90)=617.17ms p(95)=979.14ms
     http_req_failed................: 0.00%   0 out of 191878
     http_req_receiving.............: avg=40.53µs  min=5µs   med=18µs     max=65.69ms p(90)=74µs     p(95)=102.14µs
     http_req_sending...............: avg=10.06µs  min=1µs   med=3µs      max=53.75ms p(90)=15µs     p(95)=23µs    
     http_req_tls_handshaking.......: avg=0s       min=0s    med=0s       max=0s      p(90)=0s       p(95)=0s      
     http_req_waiting...............: avg=246.11ms min=373µs med=103.09ms max=6.91s   p(90)=617.11ms p(95)=979.11ms
     http_reqs......................: 191878  4263.707029/s
     iteration_duration.............: avg=246.24ms min=406µs med=103.26ms max=6.91s   p(90)=617.2ms  p(95)=979.24ms
     iterations.....................: 191878  4263.707029/s
     vus............................: 7       min=7                max=1990
     vus_max........................: 2000    min=2000             max=2000


running (0m45.0s), 0000/2000 VUs, 191878 complete and 0 interrupted iterations
default ✓ [======================================] 0000/2000 VUs  45s

总请求量 191878, 持续时间 45.0s
p(95)=979.14ms : 95% 的请求响应时间在 979.14ms 以内


http://www.niftyadmin.cn/n/5869648.html

相关文章

Springboot快速接入豆包大模型

背景 突然接到上面的通知,想要在系统里面接入各大模型的能力,我这边随机选了个豆包,然后快速对接了一下,很顺利,一把过,现在文档的快速入门还是很ok的,在此记录一下过程,给宝子们参考…

基于卷积神经网络的建筑物识别系统,resnet50,mobilenet模型【pytorch框架+python源码】

更多目标检测、图像分类识别、目标检测与追踪等项目可看我主页其他文章 功能演示: 基于卷积神经网络的建筑物系统,resnet50,mobilenet【pytorch框架,python,tkinter】_哔哩哔哩_bilibili (一&#xff09…

【网络】TCP vs UDP详解( 含python代码实现)

【网络】TCP vs UDP详解 1. 基本概念2. 主要特性对比3. 工作原理TCP 的工作原理UDP 的工作原理 4. 优缺点对比5. 适用场景6. 代码示例TCP 服务器TCP 客户端UDP 服务器UDP 客户端 7. 总结 TCP(传输控制协议)和 UDP(用户数据报协议)…

ALM研发管理:全新甘特图,让项目管理更高效

在软件开发领域,甘特图一直是项目管理的重要工具。通过可视化的任务时间线,清晰地展示项目的进度和关键时间节点,帮助团队成员快速理解项目状态,协调工作进度,从而有效提升项目管理的效率。无论是需求分析、设计、开发…

自然语言处理:初识自然语言处理

介绍 大家好,博主又来给大家分享知识了。从这次开始,博主给大家分享自然语言处理这个领域的内容。这也是博主非常感兴趣的研究领域。 最开始,博主计划在自然语言处理系列的第一篇博文中,和大家聊聊文本规范化这个话题。毕竟在自…

AI大模型-提示工程学习笔记20-多模态思维链提示

目录 1. 多模态思维链提示的核心思想 (1) 单模态 CoT 的局限性 (2) Multimodal CoT 的解决方案 2. Multimodal CoT 的工作流程 (1) 多模态输入 (2) 特征提取 (3) 多模态融合 (4) 思维链生成 (5) 答案生成 3. Multimodal CoT 的关键组件 (1) 大语言模型 (LLM) (2) 多…

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter24-网络请求与远程资源

二十四、网络请求与远程资源 网络请求与远程资源 2005 年,Jesse James Garrett 撰写了一篇文章,“Ajax—A New Approach to Web Applications”。这篇文章中描绘了一个被他称作 Ajax(Asynchronous JavaScriptXML,即异步 JavaScrip…

计算机毕业设计SpringBoot+Vue.js汽车销售网站(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…