Test ‐ Stress Test(부하 테스트) - dnwls16071/Backend_Study_TIL GitHub Wiki
📚 처리량(Throughput), 지연 시간(Latency)
- 처리량(Throughput)
- 서비스가 1초당 처리할 수 있는 트래픽 양을 말한다.
- 단위는 TPS(Transaction Per Seconds, 1초당 처리한 트랜잭션의 수)를 많이 활용한다.
- 지연 시간(Latency)
- 요청에 대한 응답 시간을 말한다.
- 만약 내가 만든 서비스에 부하 테스트를 했을 때 평균 응답 시간이 2.5초라면 평균 Latency가 2.5초라고 얘기한다.
📚 부하 테스트 툴 선정
- k6, JMeter, Ngrinder, ab, locust 등등..
📚 k6 테스트 세팅
- k6 설치
$ $ sudo gpg -k && /
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69 && /
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list && /
sudo apt-get update && /
sudo apt-get install k6
- k6 설치 확인
❗부하 테스트 환경 분리
- 부하 테스트 툴은 테스트하고자 하는 시슽ㅁ 등과 반드시 독립적으로 분리해서 구성해야 한다. 왜냐하면 부하 테스트 툴 자체도 트래픽을 만들어내면서 컴퓨팅 리소스(CPU, 메모리 등)를 사용하기 때문이다.
❗부하 테스트 툴은 개인 컴퓨터에 설치하지 않는다.
- 개인이 가지고 있는 컴퓨터는 Windows 또는 Mac OS 일텐데, 컴퓨터 자체적으로 부하를 발생시킬 때 제한이 걸릴 때가 종종 있다.
- 따라서 EC2 인스턴스를 생성해 Linux 환경에서 부하 테스트를 진행할 것을 권장한다.
📚 백엔드 서버에 부하를 주기 위한 k6 스크립트 작성
import http from 'k6/http';
import { sleep } from 'k6';
export const options = {
stages: [
// 10분에 걸쳐 vus(virtual users, 가상 유저수)가 6000에 도달하도록 설정
{ duration: '10m', target: 6000 }
],
};
export default function () {
http.get('http://{EC2 IP 주소}/boards'); // GET 요청
sleep(1);
}
📚 k6의 웹 대시보드 열기
http://{k6가 실행되고 있는 EC2 IP 주소}:5665
으로 접속하기