= DAU x 1명당 1일 평균 요청 수
= 100만 x 10 = 1000만
= 1일 총 요청 수 / 하루 12시간을 초로 환산
= 1000만 / 43200 = 231rps
= 1일 최대 rps
= 1일 평균 rps x 피크 시간 집중률
= 231 * 5 = 1155
여기서 피크 시간 집중률은 평균 트래픽보다 트래픽이 집중될 때는 몇 배인지 예측하여 계산. 저녁 시간에 평소 트래픽보다 5배 많을 것으로 예상한다.
여러 연구에 따르면, 응답 시간이 200ms 이하일 때 사용자가 즉각적으로 반응한다고 느끼며, 500ms 이상이 되면 지연을 느끼기 시작. 1초 이상의 지연은 사용자가 불만을 느끼거나 이탈.
Google에서 페이지 로딩 시간이 500ms 증가할 때 사용자 검색량이 20% 감소한다는 연구 결과 발표
인간의 인지적 한계: 인간의 뇌는 약 200-300ms 이내에 정보 처리를 완료할 수 있어, 이 시간 이내에 응답이 이루어지면 사용자에게 자연스럽게 느껴짐.
Vuser = 목표rps x (한번의 시나리오를 완료하는데 걸리는 시간) / (시나리오 당 요청수)
Vuser = 1155rps x (0.2)/1
= 231
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 (한번의 시나리오를 완료하는데 걸리는 시간) / (시나리오 당 요청수)
| Threshold | TPS | MTT | Err Rate | Vusers |
|---|---|---|---|---|
| 60sec | 33.2 | 29.2 | 0.0% | 1 |
| 60sec | 673.8 | 14.2 | 0.0% | 10 |
| 60sec | 752.2 | 66.3 | 0.0% | 50 |
| 60sec | 719.3 | 137.0 | 0.0% | 99 |
| 60sec | 555.6 | 378.6 | 0.0% | 228 |
| 60sec | 469.5 | 820.2 | 0.0% | 500 |
Vusers가 늘어남에 따라 tps가 늘어나다가 vusers 50명에서 최고점을 찍고 그후로 점점 성능이 안좋아지는 것을 볼 수 있었음.

부하가 계속 증가하더라도 어느 시점에 이르러 처리량이 더이상 증가하지 않고 일정한 수준을 유지하게 되는데, 이렇게 되는 변곡점을 포화점/임계점 (Saturation point)이라 부른다. 포화점 이후부터는 대기시간 (Queuing time)이 길어지기 때문에 응답시간이 기하급수적으로 증가하게 되며, 사용자가 증가하더라도 성능이 더 이상 올라가지 않기 때문에 이 때의 동시 사용자 수를 최대 허용 동시 사용자라고 표현한다. Saturation point는 해당 시스템의 최대 처리량을 나타내는 지점이 된다.
성능 테스트의 한 형태인 Critical Performance Test (임계 성능 테스트)의 경우, Saturation point를 찾아내는 것을 목표로 한다. 즉, 해당 시스템의 한계 성능을 확인하기 위함이다. 이로 인해, 최대 TPS와 그 때의 응답시간과 자원사용률, 최대 허용 동시 사용자 수 등을 알 수 있게 된다.
참고:
https://performance.tistory.com/4
https://velog.io/@sontulip/performance-test