【问题标题】:Use k6 to just execute X number of requests使用 k6 只执行 X 个请求
【发布时间】:2021-06-07 13:11:25
【问题描述】:

有没有办法执行 X 个请求?

我玩过迭代和虚拟用户,但当我不想设置持续时间时,它们似乎需要设置持续时间,只需为每个用户执行 X 个请求。我不想增加或尝试最大化吞吐量,只是触发请求。

谢谢

【问题讨论】:

    标签: node.js k6


    【解决方案1】:

    您可以在选项中配置iterations,它在没有 JS for-loop 的情况下运行良好。

    例如loop.js

    import http from 'k6/http';
    const N = 10;
    
    export let options = {
      vus: N,
      iterations: N,
    };
    
    export default function () {
      http.get('http://test.k6.io');
    }
    

    K6 输出:

    ➜ k6 run loop.js
    
              /\      |‾‾| /‾‾/   /‾‾/   
         /\  /  \     |  |/  /   /  /    
        /  \/    \    |     (   /   ‾‾\  
       /          \   |  |\  \ |  (‾)  | 
      / __________ \  |__| \__\ \_____/ .io
    
      execution: local
         script: loop.js
         output: -
    
      scenarios: (100.00%) 1 scenario, 10 max VUs, 10m30s max duration (incl. graceful stop):
               * default: 10 iterations shared among 10 VUs (maxDuration: 10m0s, gracefulStop: 30s)
    
    running (00m00.8s), 00/10 VUs, 10 complete and 0 interrupted iterations
    default ✓ [======================================] 10 VUs  00m00.7s/10m0s  10/10 shared iters
    
         data_received..................: 113 kB 151 kB/s
         data_sent......................: 760 B  1.0 kB/s
         http_req_blocked...............: avg=250.28ms min=241.54ms med=250.71ms max=255.63ms p(90)=251.58ms p(95)=253.61ms
         http_req_connecting............: avg=248.8ms  min=240.55ms med=249.06ms max=254.19ms p(90)=250.05ms p(95)=252.12ms
         http_req_duration..............: avg=302.49ms min=244.32ms med=256.28ms max=495.71ms p(90)=495.62ms p(95)=495.67ms
           { expected_response:true }...: avg=302.49ms min=244.32ms med=256.28ms max=495.71ms p(90)=495.62ms p(95)=495.67ms
         http_req_failed................: 0.00%  ✓ 0         ✗ 10
         http_req_receiving.............: avg=49.71ms  min=67µs     med=753.5µs  max=245.41ms p(90)=244.72ms p(95)=245.06ms
         http_req_sending...............: avg=174.6µs  min=43µs     med=160.5µs  max=538µs    p(90)=264.39µs p(95)=401.19µs
         http_req_tls_handshaking.......: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
         http_req_waiting...............: avg=252.61ms min=243.14ms med=253.33ms max=258.95ms p(90)=256.57ms p(95)=257.76ms
         http_reqs......................: 10     13.329459/s
         iteration_duration.............: avg=553.36ms min=486.05ms med=507.9ms  max=746.35ms p(90)=746.27ms p(95)=746.31ms
         iterations.....................: 10     13.329459/s
    
    

    【讨论】:

      【解决方案2】:

      我认为你可以使用简单的 JavaScript 循环。

      示例场景test.js

      import http from 'k6/http';
      
      const N = 10;
      
      export default function () {
          for (let i = 0; i < N; ++i) {
              http.get('http://test.k6.io');
          }
      }
      
      

      k6 run test.js 输出,如您所见 - 确切的 10 个请求:

      [12:06]d.vinokurov@MBP-DVinokurov[lptl]$ k6 run test.js
      
                /\      |‾‾| /‾‾/   /‾‾/
           /\  /  \     |  |/  /   /  /
          /  \/    \    |     (   /   ‾‾\
         /          \   |  |\  \ |  (‾)  |
        / __________ \  |__| \__\ \_____/ .io
      
        execution: local
           script: test.js
           output: -
      
        scenarios: (100.00%) 1 scenario, 1 max VUs, 10m30s max duration (incl. graceful stop):
                 * default: 1 iterations for each of 1 VUs (maxDuration: 10m0s, gracefulStop: 30s)
      
      
      running (00m01.6s), 0/1 VUs, 1 complete and 0 interrupted iterations
      default ✓ [======================================] 1 VUs  00m01.6s/10m0s  1/1 iters, 1 per VU
      
           data_received..................: 113 kB 71 kB/s
           data_sent......................: 760 B  476 B/s
           http_req_blocked...............: avg=14.56ms  min=2µs      med=2.5µs    max=145.61ms p(90)=14.56ms  p(95)=80.09ms
           http_req_connecting............: avg=14.38ms  min=0s       med=0s       max=143.8ms  p(90)=14.38ms  p(95)=79.09ms
           http_req_duration..............: avg=144.89ms min=143.37ms med=144.2ms  max=151.88ms p(90)=145.74ms p(95)=148.81ms
             { expected_response:true }...: avg=144.89ms min=143.37ms med=144.2ms  max=151.88ms p(90)=145.74ms p(95)=148.81ms
           http_req_failed................: 0.00%  ✓ 0   ✗ 10
           http_req_receiving.............: avg=1.52ms   min=286µs    med=821µs    max=7.62ms   p(90)=2.65ms   p(95)=5.13ms
           http_req_sending...............: avg=30.69µs  min=15µs     med=18µs     max=147µs    p(90)=34.49µs  p(95)=90.74µs
           http_req_tls_handshaking.......: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s
           http_req_waiting...............: avg=143.33ms min=142.69ms med=143.17ms max=144.24ms p(90)=144.02ms p(95)=144.13ms
           http_reqs......................: 10     6.264016/s
           iteration_duration.............: avg=1.59s    min=1.59s    med=1.59s    max=1.59s    p(90)=1.59s    p(95)=1.59s
           iterations.....................: 1      0.626402/s
           vus............................: 1      min=1 max=1
           vus_max........................: 1      min=1 max=1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多