왜 평균은 거짓말을 하는가: p99 latency가 사용자가 실제로 느끼는 것
Source: Dev.to
Introduction
대부분의 성능 대시보드는 보기 좋습니다:
- Average latency: low
- CPU: stable
- Memory: healthy
그럼에도 불구하고 사용자는 “앱이 느리게 느껴진다”고 불평합니다. 이것은 미스터리가 아니라 측정 지표 문제입니다.
The problem with averages
다음과 같은 시스템을 상상해 보세요:
- 요청의 99 %가 10 ms 안에 완료
- 1 %의 요청은 1000 ms가 걸림
평균 지연 시간은 약 20 ms로 차트에서는 훌륭해 보입니다.
하지만 100명 중 1명은 1초짜리 정지를 경험합니다. 이는 예외 상황이 아니라 실제 사용자입니다.
Why percentiles matter
- p50 – 일반적인 상황을 보여줍니다
- p90 / p95 – 변동성이 증가하는 모습을 나타냅니다
- p99 – 시스템이 실제로 붕괴되는 지점을 보여줍니다
p99가 나쁘면, 평균이 완벽해 보여도 시스템은 나쁘게 느껴집니다.
Variance and jitter
높은 분산은 일정하게 느린 성능보다 더 큰 피해를 줍니다.
- 40 ms 로 안정적인 시스템이 5 ms 와 200 ms 사이를 오가는 시스템보다 더 빠르게 느껴집니다.
- 이러한 변동성(지터)은 UI 끊김, 오디오 끊김, 프레임 손실을 초래합니다.
Latency Lens – a lightweight analysis tool
나는 Latency Lens라는 작은 CLI 도구를 만들었습니다. 이 도구는 평균이 아닌 tail behavior에 초점을 맞춥니다. 제공 기능은 다음과 같습니다:
- p50 / p90 / p95 / p99
- Jitter (표준 편차와 MAD)
- Spike detection
- Worst‑case time windows
Installation
- GitHub:
- PyPI:
How to diagnose “slow feeling”
사용자가 시스템이 느리게 느껴진다고 말한다면:
- 평균을 보지 마세요
- p99를 확인하세요
- 분산을 체크하세요
- 시간에 따른 스파이크를 찾아보세요
대부분 진실은 여기서 드러납니다.