[K6] k6 부하 테스트

bbbbbhyun·2026년 3월 5일

DevOps & Cloud

목록 보기
29/29

준비

  1. https://github.com/grafana/k6/releases에서 window용 .zip파일 다운로드
  2. 압축을 풀고 k6.exe 파일을 오프라인 윈도우 서버로 복사
  3. 테스트 스크립트 작성
  • script 예시

import http from "k6/http";

export const options = {
  scenarios: {
    constant_request_rate: {
      executor: 'constant-arrival-rate',
      rate: 10,              // 초당 10건
      timeUnit: '1s',        // 기준 시간 (1초)
      duration: '1m',        // 테스트 전체 지속 시간
      preAllocatedVUs: 10,   // 처음에 미리 할당할 VU 수 (10~20 추천)
      maxVUs: 300,            // 응답이 느려질 경우 대비한 최대 VU 수
    },
  },
};


export default function () {
  // VU가 실행하는 코드
  const url = "http://localhost:8080/api/auth";

  http.get(url);

}

실행

  • k6.exe가 있는 폴더에서 명령 프롬프트나 파워쉘을 open
  • 테스트 명령어 실행
k6 run script.js
  • 부하 설정 (옵션): 가상 사용자(VU)와 시간을 설정
k6 run --vus 10 --duration 30s script.js
  • dashboard 확인

linux

K6_WEB_DASHBOARD=true k6 run script.js

window

k6 run --out web-dashboard script.js
  • 터미널 화면에서 메트릭(HTTP 요청, 응답 시간 등)을 바로 확인

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


     execution: local
        script: script.js
 web dashboard: http://127.0.0.1:5665
        output: -

     scenarios: (100.00%) 1 scenario, 300 max VUs, 40s max duration (incl. graceful stop):
              * constant_request_rate: 1.00 iterations/s for 10s (maxVUs: 1-300, gracefulStop: 30s)



  █ TOTAL RESULTS

    HTTP
    http_req_duration..............: avg=31.71ms min=29.92ms med=31.22ms max=34.53ms p(90)=33.73ms p(95)=34.13ms
      { expected_response:true }...: avg=31.71ms min=29.92ms med=31.22ms max=34.53ms p(90)=33.73ms p(95)=34.13ms
    http_req_failed................: 0.00%  0 out of 11
    http_reqs......................: 11     1.096671/s

    EXECUTION
    iteration_duration.............: avg=31.88ms min=29.92ms med=31.22ms max=36.37ms p(90)=33.73ms p(95)=35.05ms
    iterations.....................: 11     1.096671/s
    vus............................: 1      min=0       max=1
    vus_max........................: 1      min=1       max=1

    NETWORK
    data_received..................: 5.7 kB 573 B/s
    data_sent......................: 2.0 kB 204 B/s




running (10.0s), 000/001 VUs, 11 complete and 0 interrupted iterations
constant_request_rate ✓ [======================================] 000/001 VUs  10s  1.00 iters/s

주의사항

  • 외부 모듈 제한: 외부 인터넷 연결이 필요한 모듈(import)은 오프라인에서 실패
  • 데이터 소스: 테스트에 필요한 데이터는 CSV 등의 파일로 로컬에 준비
  • 결과 저장: 로컬 파일로 결과를 저장하려면 다음 명령어를 사용
k6 run --out json=result.json script.js
profile
BackEnd developer

0개의 댓글