부하테스트를 진행하기전에 어떠한 테스트들이 있고, 테스트를 위한 설정 값들은 무엇이 있는지 알아보자.
Smoke Test
- 최소 부하 상태에서 시스템에 오류가 발생하는지 확인하는 테스트
- VUser: 1~2로 구성
Load Test
적절한 부하를 발생시켜 통계적으로 의미있는 수치를 측정하는 테스트
- 발생시키는 부하는 실제 시스템에 적용될 예상 트래픽이어야 한다
- 서비스의 평소 트래픽과 최대 트래픽 상황의 성능 테스트
- 평균 VUser
- 최대 VUser
- 부하 테스트의 목표는 애플리케이션이 향후 예상되는 로드를 관리할 수 있도록 데이터베이스, 하드웨어, 네트워크 등과 같은 애플리케이션의 모든 구성 요소에 대한 상한을 결정한다.
Stress Test
시스템이 과부하 상태에서 어떻게 작동하는지를 검사하는 테스트
- 무조건 문제가 발생할 수 밖에 없는 테스트
- 점진적으로 부하를 증가시켜 한계점 확인
- 한계점은 변곡점이라고 생각할 수도 있고, 실제 에러가 발생한 지점이라고 볼 수도 있음
테스트 설정값 구하기
1. 목표 rps 구하기
- 우선 예상 1일 사용자 수(DAU)를 정해봅니다. -> 8,000명
- 피크 시간대의 집중률을 예상해봅니다. (최대 트래픽 / 평소 트래픽) -> 100GB / 10GB = 10
- 1명당 1일 평균 접속 혹은 요청수를 예상해봅니다. 50회
- 이를 바탕으로 Throughput을 계산합니다.
- Throughput : 1일 평균 rps ~ 1일 최대 rps
- 1일 총 접속 수 = 1일 사용자 수(DAU) x 1명당 1일 평균 접속 수
- 400,000 = 8,000명 x 50회
- 1일 평균 rps = 1일 총 접속 수 / 86,400 (초/일)
- 4.629 = 400,000 요청 / 86,000초
- 1일 최대 rps = 1일 평균 rps x (최대 트래픽 / 평소 트래픽)
- 46.29 = 4.629 x (100GB / 10GB)
- 1일 총 접속 수 = 1일 사용자 수(DAU) x 1명당 1일 평균 접속 수
- Latency : 일반적으로 100ms 이하로 잡는 것이 좋다.
- 50ms
2. VUser 구하기
- Request Rate: measured by the number of requests per second (RPS)
- 요청 속도: 초당 요청 수로 측정됨
- VU: the number of virtual users
- 가상 사용자 수
- R: the number of requests per VU iteration
- VU 반복당 요청 수
- T: a value larger than the time needed to complete a VU iteration
- VU 반복을 완료하는 데 필요한 시간
T = (R * http_req_duration) (+ 1s) ; 내부망에서 테스트할 경우 예상 latency를 추가한다
VUser = (목표 rps * T) / R
- 가령, 두개의 요청 (R=2)이 있고, 왕복시간이 0.5s, 지연시간이 1초라고 가정할 때 (T=2), 계산식은 아래와 같다.
VU = (300 * 2) / 2 = 300
VUser 구하는 공식 이해하기
- VU 반복을 완료하는 데 필요한 시간 = (VU 반복당 요청 수 x http 요청지속시간) + Latency
- 가상 사용자 수 = (목표 RPS * VU 반복을 완료하는 데 필요한 시간) / 요청 개수
- 목표 RPS = (가상 사용자 수 * 요청 개수) / VU 반복을 완료하는 데 필요한 시간
3. 테스트 기간
- 일반적으로 Load Test는 보통 30분 ~ 2시간 사이로 권장합니다. 부하가 주어진 상황에서 DB Failover, 배포 등 여러 상황을 부여하며 서비스의 성능을 확인합니다.
'DevOps. > Infra' 카테고리의 다른 글
Grafana k6 사용하여 부하테스트 하는 방법 3 (0) | 2022.12.07 |
---|---|
Grafana k6 사용하여 부하테스트 하는 방법 2 (0) | 2022.12.07 |
Nginx로 Reverse Proxy 서버 만들기 (0) | 2022.11.21 |