누워서 보는 웹 애플리케이션 성능 II – 다운 샘플링이 가져오는 왜곡 현상들

이전 글(누워서 보는 웹 애플리케이션 성능 – 평균과 분포)에서는 개별 응답시간을 평균 응답시간으로 표현할 경우 왜곡 현상이 발생되는 것을 다루었습니다. 간단히 말해 Y축의 데이터를 평균화 시키면서 나타나는 왜곡 현상입니니다. 이번 글에서는 샘플링 주기(X축의 데이터 왜곡 현상)가 가져 오는 문제점 및 와탭이 APM/SMS 서비스를 운영하면서 만난 유사한 문제들과 그 해결책을 공유하고자 합니다.

APM에서 발생하는 샘플링 문제 

N사의 APM을 사용하면서 고객들이 가지는 몇몇 고충들이 있었는데요…

  • 장애가 난 후 적게는 몇 분에서, 많게는 몇십 분이 지난 후에 장애를 인지하게 된다.
  • 성능에 대한 문제가 발생했음에도 불구하고 응답시간이 낮은 트랜잭션의 비율이 많으면  문제가 안 보인다.

실제 Quora에 올라온 글입니다.

newrelic issue

간단히 요약하면, ‘N사는 1분 평균의 데이터를 보여주기 때문에 최근 20초 동안 애플리케이션에 문제가 발생하더라도, 나머지 40초 간의 정상적인 트랜잭션으로 인해 데이터가 평균화 되면서 실제 문제를 못 보는 경우가 발생한다.’라는 것입니다.

누워서 보는 웹 애플리케이션 성능 II – 다운 샘플링이 가져오는 왜곡 현상들 더보기

누워서 보는 웹 애플리케이션 성능에 필요한 수학 I – 분포와 평균

애플리케이션 성능 향상을 위해 알아야 하는 여러 개념들을 소개하고, 왜 와탭 APM이 실시간 모니터링, 분포도를 표현하는 히트맵 등을  도입했는지, 철학에 기반을 둔 여러 이론들을 하나 둘씩 설명하도록 하겠습니다.  이번 글은 분포와 평균에 대해 다루고자 합니다.

제목으로 누워서 본다는 글을 적었는데 최대한 쉽게, 특별한 수학적 배경이 없어도 알 수 있도록 차근차근 알려드리도록 하겠습니다.

성능의 기준은 LogNormal이 기본

이미지 참조 사이트 - https://www.unc.edu/courses/2007spring/enst/562/001/docs/lectures/lecture6.htm
그림 1. Normal과 Lognormal

예전 수학시간에 많은 것들이 정규분포를 가진다고 배웠습니다. 위 그림에서 보시면, Normal은 정규분포를 의미합니다. 특정 기준값(위 그림에선 0)에 수렴하며 +, -의 값이 균등한 분포를 가지면서 0에 수렴하는 것을 가집니다. 하지만 웹 서버의 성능에 대한 지표는 정규분포를 가지면 안 됩니다. 응답시간에서 -(마이너스)는 존재하지 않으며, 모든 트랜젹선의 응답시간이 한없이 0에 가까워야 되기 때문입니다.

그래서 오른쪽 그림의 LogNormal(로그 정규분포)이 성능이 추구하는 분포에 훨씬 가까우며, 이로 인해 성능 관련 블로그들이나 글들을 보면 자주 LogNormal이라는 단어들이 등장하는 것을 보실 수 있습니다. 심지어 lognormal이라는 이름의 성능 관련 회사도 있습니다.

누워서 보는 웹 애플리케이션 성능에 필요한 수학 I – 분포와 평균 더보기