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 설치 확인

image

❗부하 테스트 환경 분리

  • 부하 테스트 툴은 테스트하고자 하는 시슽ㅁ 등과 반드시 독립적으로 분리해서 구성해야 한다. 왜냐하면 부하 테스트 툴 자체도 트래픽을 만들어내면서 컴퓨팅 리소스(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으로 접속하기 스크린샷 2025-03-17 오후 6 21 49