본문 바로가기

Node.js

K6 성능 테스트

0. 원도우에서 K6 설치하기

https://dl.k6.io/msi/

 

k6 Packages

 

dl.k6.io

공식 사이트에서 k6-latest-amd64.msi 파일을 다운로드 받아서 설치를 진행합니다.

 

1. k6 테스트 스트립트 작성 및 실행

import http from "k6/http";

// vus는 가상 유저를 설정하는 항목
// duration은 몇 초동안 테스트를 진행할지 선택하는 옵션
export const options = { // 100명이 10초 동안 요청 로직 작성
  vus: 100,
  duration: "10s"
};

export default function(){ // 테스트에 사용할 요청 메서드,주소
  http.get("http://localhost:3002");
}

k6 run 파일명.js로 k6를 실행하여 스크립트 동작을 확인합니다.

 

2. 실행 결과 해석하기

1)  scenarios: (100.00%) 1 scenario, 100 max VUs, 40s max duration (incl. graceful stop):
              * default: 100 looping VUs for 10s (gracefulStop: 30s)

가상 유저 100명으로 최대 40초동안 테스트라는 시나리오입니다. 실제 테스트 시간은 10초인데 gracefulStop의 기본값 30초를 더해서 40초가 되었습니다.

* gracefulStop 옵션은 가상 유저를 테스트 중에 변경하는 시나이로에 갑자기 유저를 변경하게 되면 데이터가 급변한느 현상이 생기므로 최소 30초 동안은 기존 유저 값이 유지된다는 의미입니다.

 

2) http_req_duration..........: avg=300.32ms min=11.04ms med=236.31ms max=3.34s   p(90)=356.17ms p(95)=407.69ms

HTTP 요청 기간에 대한 결과입니다. 평균 300.32밀리초가 걸렸습니다. p(90)=356.17는 90%요청이 356.17 밀리초 이내에 완료되었음을 의미합니다.

 

 3) http_req_failed............: 0.00% ✓ 0       ✗ 3344

HTTP 요청이 얼마나 실패했는지 보여줍니다.

 

4)http_reqs..................: 3344

HTTP 요청이 3344번 발생했다는 듯입니다. 이를 기반으로 n초 간격으로 요청을 보냈는지 확인할 수 있습니다.

 

5) iteration_duration.........: avg=302.5ms  min=11.75ms med=236.94ms max=3.41s   p(90)=357.59ms p(95)=408.24ms

HTTP 요청이 한 번 완료되고 다시 시작할 때까지 걸리는 시간에 대한 평균 데이터입니다.