ngrinder 성능 테스트 및 vuser 설정

권다운·2025년 3월 22일

성능테스트를 하는 이유

  1. 과도한 트래픽 상황에서 어떤 문제가 발생하는지 확인
  2. 병목 현상 식별
  3. 포화점/임계점 (Saturation point) 찾기

rps 및 mtt 기준 설정

1. DAU: 100만 (경쟁 어플의 DAU 참고https://maily.so/kimhyunjun/posts/l1zqm1ljr5x)

2. 1일 총 요청 수 :1000만

= DAU x 1명당 1일 평균 요청 수
= 100만 x 10 = 1000만

3. 1일 평균 rps(request per second) =231rps

= 1일 총 요청 수 / 하루 12시간을 초로 환산
= 1000만 / 43200 = 231rps

4. 최대 트래픽 =1155rps

= 1일 최대 rps
= 1일 평균 rps x 피크 시간 집중률
= 231 * 5 = 1155

여기서 피크 시간 집중률은 평균 트래픽보다 트래픽이 집중될 때는 몇 배인지 예측하여 계산. 저녁 시간에 평소 트래픽보다 5배 많을 것으로 예상한다.

5. 목표

  1. 사용자들이 1초에 1155번의 요청 보낼때 각 요청을 200ms 안에 응답할 수 있는지 확인
  2. 문제가 없다면, 서버의 최대 성능을 알아보기 위해 최대 트래픽을 넘어서는 부하를 주어가며 문제가 발생하는 지점 찾기

여러 연구에 따르면, 응답 시간이 200ms 이하일 때 사용자가 즉각적으로 반응한다고 느끼며, 500ms 이상이 되면 지연을 느끼기 시작. 1초 이상의 지연은 사용자가 불만을 느끼거나 이탈.
Google에서 페이지 로딩 시간이 500ms 증가할 때 사용자 검색량이 20% 감소한다는 연구 결과 발표
인간의 인지적 한계: 인간의 뇌는 약 200-300ms 이내에 정보 처리를 완료할 수 있어, 이 시간 이내에 응답이 이루어지면 사용자에게 자연스럽게 느껴짐.

Vuser 구하기

Vuser = 목표rps x (한번의 시나리오를 완료하는데 걸리는 시간) / (시나리오 당 요청수)
Vuser = 1155rps x (0.2)/1
= 231

Vuser 계산 공식 이유

Vuser는 결국 목표한 트래픽 상황을 만들어 내기 위해 필요.
따라서 목표한 트래픽 상황을 만들어 냈는지 아닌지를 기준으로 생각할 것

예제

목표 rps : 100rps
get 요청 1의 목표 응답 시간 : 0.1s
요청1과 2 사이의 think time : 0.8s
get 요청 2의 목표 응답 시간 : 0.1s

저희는 100 rps 상황을 만들어야 합니다.
즉 Vuser들이 1초에 100번의 요청을 보내야 합니다.
저희가 목표한 응답 시간에 맞추어 응답을 할 수 있다면 Vuser 1명은 1초 (0.1 + 0.8 + 0.1)에 두 번씩 요청보낼 수 있습니다.
따라서 Vuser가 50명이면 1초 동안 50개의 요청을 보낼 수 있습니다.

공식 자체로 설명해보면,
Vuser 수 x (1초당 요청 횟수) = rps
Vuser 수 = rps x ( 1 / (1초당 요청 횟수) )
Vuser 수 = rps x (요청 하나당 걸리는 평균 시간)
Vuser 수 = rps x (한번의 시나리오를 완료하는데 걸리는 시간) / (시나리오 당 요청수)

결과

ThresholdTPSMTTErr RateVusers
60sec33.229.20.0%1
60sec673.814.20.0%10
60sec752.266.30.0%50
60sec719.3137.00.0%99
60sec555.6378.60.0%228
60sec469.5820.20.0%500

Vusers가 늘어남에 따라 tps가 늘어나다가 vusers 50명에서 최고점을 찍고 그후로 점점 성능이 안좋아지는 것을 볼 수 있었음.

부하가 계속 증가하더라도 어느 시점에 이르러 처리량이 더이상 증가하지 않고 일정한 수준을 유지하게 되는데, 이렇게 되는 변곡점을 포화점/임계점 (Saturation point)이라 부른다. 포화점 이후부터는 대기시간 (Queuing time)이 길어지기 때문에 응답시간이 기하급수적으로 증가하게 되며, 사용자가 증가하더라도 성능이 더 이상 올라가지 않기 때문에 이 때의 동시 사용자 수를 최대 허용 동시 사용자라고 표현한다. Saturation point는 해당 시스템의 최대 처리량을 나타내는 지점이 된다.

성능 테스트의 한 형태인 Critical Performance Test (임계 성능 테스트)의 경우, Saturation point를 찾아내는 것을 목표로 한다. 즉, 해당 시스템의 한계 성능을 확인하기 위함이다. 이로 인해, 최대 TPS와 그 때의 응답시간과 자원사용률, 최대 허용 동시 사용자 수 등을 알 수 있게 된다.

최대 TPS:752, MTT:66, Vusers:50

문제점 확인

  1. Vuser가 늘어나더라도 throughput은 떨어지면 안됨 이유를 찾아야함
  2. 포화점에서 tps가 752인데 1155까지 늘려야함 개선방안을 찾아보자

개선해야할 점

  1. throuhput이 떨어지는 이유 찾고 개선하기
  2. tps를 1155까지는 개선해야 함

참고:
https://performance.tistory.com/4
https://velog.io/@sontulip/performance-test

profile
엄마나는커서개발자가될래요!!!

0개의 댓글