최근에 추천시스템을 개발하고 나서 내 추천서버가 어느 정도로 부하를 견딜 수 있는지 테스트 해보고자 하였다.
파이썬으로 추천시스템을 작성하다보니 파이썬 부하 테스트로 유명한 locust를 사용하고자 한다.
pip3 install locust
파이프 라인을 통해 locust를 다운받고 아래와 같은 실행을 통해서 버전을 확인한다.
locust --version
locust document: https://docs.locust.io/en/stable/quickstart.html
필자는 API 테스트를 해보기 위해서 HttpUser를 상속받아 테스트를 진행하였다.
또한 @task() 안에 들어가는 숫자로 가중치를 두어 숫자가 높은 API를 테스트 해볼 수 있다. 예를 들어 @task(1) 인 API 보다 @task(2) 는 2번 더 실행되는 격이다.
그리고 임시로 넣어둔 다이어리 1~16까지의 id값과 테스트 유저값 4개를 넣어두어 해당 API를 테스트 해볼 수 있는 기회였다.
recommand API 또한 위와 동일하다.
만약 API가 post로 이루어져 있다면 self.client.post("/", body) 형식으로 체크가 가능하다.
위의 코드를 test.py
로 작성을 하고 나서 locust로 실행시켜 주자
locust -f test.py
정상적으로 실행이 되었다면 위와 같이 실행되고 있는 포트 번호와 실행중인 locust 의 버전이 나올 것이다.
http://localhost:8089/
에 접근하게 된다면 아래와 같은 사이트가 나온다.
첫번째 빈칸은 유저의 인원수를 작성하는 칸과 두번째 칸으로 유저가 투입되는 시간을 나타는 second 작성 및 마지막으로 테스트할 Host를 작성하는 것이다.
자신이 테스트 해 볼 서버에 대해서 실행 시켜 주도록 하자. 필자는 블로그 작성을 위한 로컬로 테스트 하지만 EC2 에서 돌아가는 서버의 IP주소를 대신해서 넣으면 된다.
위의 사진을 통해서 주소가 http://125.129.73.84:5000/
라는 것을 알았으므로 위의 마지막 칸 안에 작성해 주도록 하자.
shell 창에 나온 분석 결과
web 에서 확인 가능한 차트 분석 결과
서버 로그 기록
데스크 탑 사양이 나쁘지 않아 RPS 값이 28인데도 불구하고 시간이 0.12초 정도 나오는 것을 확인할 수 있다. 이 처럼 간단히 부하테스트를 할 수 있고 시각적인 그래프를 보여주는 locust를 한 번 실행해보는 것을 추천한다.
정말 감사합니다. 굿굿