p90, p95, p99 latency

2022. 11. 16. 09:30Computer/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