인프런 커뮤니티 질문&답변

hihello님의 프로필 이미지
hihello

작성한 질문수

백엔드 애플리케이션 성능 테스트하기

높은 부하를 받았을 때의 성능 테스트 결과 해석하기

postman 에서 api 테스트했을 때 응답 레이턴시 차이가 있는 이유

해결된 질문

작성

·

798

·

수정됨

1

안녕하세요 강사님

해당 강의에서 postman 으로 /high-load-cpu GET 요청을 보냈을 때 첫번째 요청은 134ms 가 걸리고 2번째 요청 이후부터는 30대의 ms 가 걸리는 것을 보여주셨는데요.

이게 첫번째 요청과 2번째 이후부터의 요청의 latency 가 다른 이유가 무엇인가요?

이전에 사이드프로젝트를 진행하며 latency 측정할 때도 비슷한 현상이 있었습니다. (동일한 API 에 대한 요청인데 첫번째 요청만 오래걸리고, 두번째부터는 훨씬 빠르게 처리됨)

첫 요청 및 응답 이후에는 2번째 때부터 요청/응답 하는 과정에서 달라지는 부분들이 있는건가요?

이후 강의를 듣다보니 첫번째는 웜업 과정 때문에 오래걸린다고 말씀하시네요.. ㅎㅎ 그렇다면 보통 평균 속도를 측정한다고 하면 1번째는 제외하고 2번째 응답 속도부터 n 번째 응답 속도까지의 평균을 계산하는 게 맞다고 보면 되나요?

답변 2

0

이준형(Foo)님의 프로필 이미지
이준형(Foo)
지식공유자

hihello님 안녕하세요~

인프런 AI 인턴이 이미 잘 답변해준 것 같네요. ㅎㅎㅎ

요약하자면,

 

  • 첫번째 요청이 느린건 웜업 때문이고

  • 정확한 성능 테스트는 두번째 응답부터 측정하는게 정확합니다.

  • 또한 서비스를 실제로 운영할 때도 웜업으로 인해 성능에 영향이 발생할 수 있는데, 미리 웜업을 시킨 후 트래픽을 받도록 하는게 좋습니다. 강제로 웜업 시키는 방법에 대해선 여러가지 방법이 있으니 찾아보시면 언어별로, 사용중인 라이브러리별로 다양한 정보가 있을겁니다.

     

또 궁금한 내용 있으면 질문 남겨주세요.

감사합니다. (_ _)

0

안녕하세요, 인프런 AI 인턴입니다.

API 응답 레이턴시가 처음 요청과 이후 요청에서 다르게 나타나는 현상은 일반적으로 ‘컴퓨터 시스템의 웜업(warm-up) 효과’ 때문입니다. 첫번째 요청에서는 JVM(Java Virtual Machine)의 JIT(Just-In-Time) 컴파일러가 최적화을 수행하거나, 데이터를 메모리에 적재하는 작업 등이 수행되며 이로 인해 다소 시간이 더 소요될 수 있습니다. 그 후 요청에서는 이미 최적화 작업이 이루어진 상태이기 때문에 처리 속도가 빨라지는 것을 경험하실 수 있습니다.

비슷한 현상은 데이터베이스의 캐시가 예열되거나, 네트워크 연결이 초기화되는 과정에서도 발생할 수 있습니다.

성능 테스트 시 평균 속도를 측정할 때는 일반적으로 첫번째 요청을 제외한 이후 요청들에 대해 평균을 내서 보다 정확한 시간을 측정하는 것이 바람직합니다. 이것은 ‘초기 부하(initial load)‘나 ‘콜드 스타트(cold start)’ 효과와 관련 있습니다.

따라서 웜업 이후의 응답 시간들만을 대상으로 평균을 계산하는 것이 좀 더 정확한 성능 측정 방법입니다. 각 시스템별 특징과 요구사항에 맞추어 적절한 요청의 수와 테스트의 범위를 결정하시면 됩니다.

즐거운 학습 되시기 바랍니다, hihello님.

hihello님의 프로필 이미지
hihello

작성한 질문수

질문하기