저번 포스트에서는 특정 API에 대해 부하테스트를 수행해보았고 결과를 바탕으로 해결책을 하나씩 제시하여 문제를 해결해 보았다. 간단하게 되짚어보자면,

테스트 개요 및 목적

저번 부하테스트는 사실 제대로 된 테스트라고 보기는 어렵다. 단순히 동일한 API 요청에 대해서 테스트를 진행했기 때문이다. 이번 부하테스트는 쓰기작업과 읽기작업 요청을 섞어서 보내고 서버 부하 정도를 확인해 볼 예정이다.

이미지 업로드 요청은 사용자가 새로운 피드를 생성할 때 사용되므로 상대적으로 읽기 요청에 비해 적은 빈도를 가진다. 그렇기에 쓰레드 수를 차등 분배하여 테스트할 것이다. 테스트를 통해 알아볼 내용은 다음과 같다.

  1. 이미지 업로드 요청은 많은 리소스를 사용하며 읽기 요청에 비해 오랫동안 연결을 유지해야하므로 서버의 부하가 심할 것으로 예상된다. 따라서, 이미지 업로드 요청에 사용되는 리소스와 응답시간을 측정한다.
  2. 이미지 업로드 요청과 최신 피드 요청을 동시에 요청하여 업로드 요청이 가지는 부하를 가늠한다.

1) 이미지 업로드 요청 부하 테스트

결과 요약

결과 요약

이미지 업로드 Transactions

이미지 업로드 Transactions

이미지 업로드 Response Time

이미지 업로드 Response Time

고작 10초간 100개의 트래픽을 처리하는데도 error가 무려 20%나 발생했다. TPS 만 보면 처리에는 이상이 없어 보이지만 응답시간이 평균 2000ms를 기록했고 최대 응답시간은 무려 4000ms가 넘어간다.

그렇다면 요청을 절반으로 줄여보자.

결과 요약

결과 요약

이미지 업로드 Transactions

이미지 업로드 Transactions