일반적인 HTTP 성능 테스트를 진행할 때,

일반적인 벤치마크는 웹 서버에서 요청을 처리한 시간을 먼저 저장하고, 클라이언트로 전달되기 직전 시간(응답 시간) 사이의 경과된 시간을 측정한다. 하지만, 웹 서버는 서버에서의 지연 시간(전문용어 latency)만을 측정하지 그 이후는 측정되지 않는다. 


바로 이 문제를 조율된 누락 문제(coordinated omission)라 한다. 성능 벤치마크시 많이 간과하기도 한다. 백분위수가 높거나 TPS가 어이 없이 높다면 의심할 필요가 있다. 


괜찮은 벤치마크일수록 요청을 보낸 순간과 클라이언트에서 응답을 실제로 받는 순간 사이의 시간을 명확히 측정한다. 즉 좋은 HTTP 성능 벤치마크라면, 클라이언트에서 HTTP 요청의 응답을 제대로 받은 순간까지의 시간을 측정할 수 있을 것이다. 


(그래서 Load Runner가 대단한 툴이라 생각하고 있다..)



참고로 더 자세한 내용을 보기 원하면, 두 개의 링크를 참조한다.


https://www.quora.com/In-Java-what-is-Coordinated-Omission



특히 아래 링크는 공부하기 좋은 자료가 있다.


https://groups.google.com/forum/#!msg/mechanical-sympathy/icNZJejUHfE/BfDekfBEs_sJ





참고로,  조율된 누락 문제를 언급한 툴로 elasticsearch rally에 있었다. rally의 현재 이슈에 대해서 elasticsearch 블로그에서 잘 설명되어 있어서, 관련 내용을 살펴보는 것도 좋을 것 같다.


https://www.elastic.co/kr/blog/announcing-rally-benchmarking-for-elasticsearch




아래 이슈에서 열심히 토론 중이다.


https://github.com/elastic/rally/issues/64







Posted by '김용환'
,