p90, p95, p99 latency
2022. 11. 16. 09:30ㆍComputer/Server
pXX Latency 에 대해서
pXX 는 percentile XX 라고 읽는다. 백분위 라고 생각하면된다.
내 생각을 정리할겸 표를 만들어 보았다.
응답속도 | 요청수 | % | 누적% | |
p1 | 1 | 1 | 1% | 1% |
p3 | 2 | 2 | 2% | 3% |
p7 | 3 | 4 | 4% | 7% |
p15 | 4 | 8 | 8.5% | 15.5% |
p32 | 5 | 16 | 17% | 32.5% |
p66 | 6 | 32 | 34% | 66.5% |
p84.5 | 7 | 16 | 17% | 84.5% |
p93 | 8 | 8 | 8.5% | 93% |
p97 | 9 | 4 | 4% | 97% |
p99 | 10 | 2 | 2% | 99% |
11 | 1 | 1% | 100% | |
Total | 94 | 100% |
위의 표를 참조해서 아래 글을 이해해보자.
p99 의 latency 는 10초이다. 요청의 1%만이 10초보다 오래걸린다.
다른 사이트에서 percentil 99 latency 에 대해 다음처럼 설명한다.
The maximum latency, in seconds, for the fastest 99% of requests.
직역: 요청의 가장 빠른 99%에 대한 최대 대기 시간(초)입니다.
예를 들면 p99 응답 시간이 1.5초라면 100개의 요청 중 99개는 1.5초 이하고, 100개의 요청 중 1개는 1.5초보다 더 걸린다.
그래서 이 값을 어떻게 쓸까?
나의 경우는 Prometheus 의 PromQL 을 이용하여 monitoring dashboard 작성시 사용한다.
max by (uri) (http_server_requests_seconds{service=~"^[\\w\\W]{1,15}$", quantile="0.99", uri!~".*/management/.*", uri!~".*/monitor/l7check.*" })
위의 PromQL 은 다음을 의미한다.
1. query 수행결과의 최대값을 uri 로 group 한다.
2. query 수행결과는 service 의 글자가 15글자 내이고, 분위수가 0.99이며, uri 가 management, monitor path 를 포함하지 아니한다.
위의 쿼리는 uri 에 대한 요청 중 99% 처리가 완료된 시점의 응답 시간을 알기 위한 쿼리이다.
이를 통해 최적화를 할 수 있는 방안들을 생각해 볼 수 있다. 99% 완료되는 응답 시간을 줄인다면, 이는 전체적인 성능 향상을 의미한다고 생각한다.
반응형
'Computer > Server' 카테고리의 다른 글
graceful shutdown (0) | 2023.12.28 |
---|---|
Issue with using reflect in kotlin (0) | 2022.10.06 |
summary of async, webflux (0) | 2022.08.04 |
Webflux exchange 와 retrieve 의 차이 (0) | 2021.03.25 |
Nginx Deny all, allow specific ip (0) | 2020.04.25 |