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
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는 써봤던 거라 조금 친숙하다.