삽집하는 개발들

[부하테스트도구] k6, wrk

악투 2024. 1. 4. 12:31
반응형

1. k6

Grafana 엔지니어링 팀이 성능 테스트를 쉽고 생산적으로 수행할 수 있게 해주는 오픈소스를 만들었음.

k6 무료!!!

 

k6 사용자는 일반적으로 개발자, QA 엔지니어, SDET 및 SRE입니다. 그들은 API, 마이크로서비스, 웹사이트의 성능과 안정성을 테스트하기 위해 k6를 사용합니다. 일반적인 k6 사용 사례는 다음과 같습니다.

  • 부하 테스트
  • k6은 최소한의 리소스 소비에 최적화되어 있으며 고부하 테스트( 스파이크 , 스트레스 , 흡수 테스트 )를 실행하도록 설계되었습니다.
  • 브라우저 테스트
  • k6 브라우저를 통해 브라우저 기반 성능 테스트를 실행하고 프로토콜 수준에서 완전히 건너뛸 수 있는 브라우저에만 관련된 문제를 포착할 수 있습니다.
  • 혼돈 및 탄력성 테스트
  • k6을 사용하여 카오스 실험의 일부로 트래픽을 시뮬레이션하거나 k6 테스트에서 트래픽을 트리거하거나 xk6-disruptor를 사용하여 Kubernetes에 다양한 유형의 결함을 주입할 수 있습니다 .
  • 성능 및 종합 모니터링
  • k6를 사용하면 작은 로드로 매우 자주 테스트를 트리거하도록 자동화하고 예약하여 프로덕션 환경의 성능과 가용성을 지속적으로 검증할 수 있습니다.

위에 기능들이 테스트 가능하다고 써져있다. 밑에 공식문서 들어가서 보면 자세히 볼 수 있다.

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

 

Installation | Grafana k6 documentation

Thank you! Your message has been received!

grafana.com

실제 k6를 이용하여 부하테스트 했던 코드

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

export default function () {
  const singUpUrl = "testUrl"
  const emailAuthUrl = "testUrl"
  const params = { headers: {'Content-Type': 'application/json'} };
  const body = [{ userEmail: "email" }, { userEmail : "email" }, { userEmail : "email" }, { userEmail : "email"}, {userEmail : "email"}];  

  for(let data of body){
    let req = http.post(emailAuthUrl, JSON.stringify(data), params);
    check(req, {
      'is status 20001': (r) =>  JSON.parse(r.body).statusCode == 20001,
      'Error status 40001': (r) => JSON.parse(r.body).statusCode == 40001
    });
  }
  sleep(0);
}

 

cli : k6 run --vus 10 --duration 30s emailLoadTest.js

(동접 10명이 30초동안 부하테스트)

 

2. wrk

부하테스트를 하는 툴로써 주요 옵션은 커넥션 갯수를 지정하는 -c 와 쓰레드 갯수를 지정하는 -t, 지속 시간을 지정하는 -d이다.

예를 들어

wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.php

12개의 쓰레드로 400개의 연결을 한 후 30초 동안 요청 전송한다는 얘기이다.

https://www.lesstif.com/software-architect/wrk-modern-http-bench-marking-tool-106856711.html

 

wrk - 모던 웹 성능 측정 도구(Modern HTTP bench marking tool)

 

www.lesstif.com

https://github.com/wg/wrk

 

GitHub - wg/wrk: Modern HTTP benchmarking tool

Modern HTTP benchmarking tool. Contribute to wg/wrk development by creating an account on GitHub.

github.com

 

부하테스트 등을 진행할 때 써보면 좋을 것 같아서 써보았다. 자세한 내용은 위 링크들로 들어가서 확인하면 된다.

 

k6는 써봤던 거라 조금 친숙하다.

반응형