Loucust : 부하 테스트

jeong_hyeon·2022년 7월 5일
0

최근에 추천시스템을 개발하고 나서 내 추천서버가 어느 정도로 부하를 견딜 수 있는지 테스트 해보고자 하였다.

파이썬 부하 테스트로 유명한 locust를 사용하고자 한다.

locust 설치

pip install locust

파이프 라인을 통해 locust를 다운받고 아래와 같은 실행을 통해서 버전을 확인한다.

locust --version

locust 실행하기

API 테스트를 해보기 위해서 HttpUser를 상속받아 테스트를 진행하였다.

from locust import HttpUser, task, between

class WebsiteTestUser(HttpUser):
    wait_time = between(1, 2.5) 
    
    @task
    def my_task(self):
        self.client.get("/questions/1/category/") # 엔드포인트작성

class WebsiteTestUser(HttpUser):
이 클래스는 우리가 부하테스트를 하면서 사용하게 될 유저의 객체를 생성하는 데 사용된다. 이 클래스는 HttpUser클래스를 상속받는데, HttpUser클래스는 각 유저에게 client속성을 부여하게 된다. 따라서 각 클래스는 마치 실제 유저가 사용하듯이 http request 요청을 보낼 수 있게 된다.

wait_time = between(1, 2.5)
각각의 task이 실행되고 유저가 최소 1초부터 최대 2.5초까지 기다렸다가 다시 요청하겠다라는 뜻이다. 즉, 각 유저별로 task하나가 끝날때마다 1초에서 2.5초를 랜덤으로 기다리게 된다.

@task
task 데코레이터로 수행될 task를 정의할 수 있다.
여러 개의 task가 있을 경우 weight를 줄 수 있는데, @task와 @task(3)이 있다면,@task가 한 번 호출될 때, @task(3)가 세 번 호출되는 식이다. 따라서 많이 호출해야하는 경우 높은 숫자를 입력하시면 된다.

self.client.get("/questions/1/category/")
테스트를 원하는 엔드포인트를 작성해주면 된다.

그리고 브라우저에서 http://localhost:8089로 접속한다.

Number of total users to simulate : 총 몇 명의 유저로 테스트할 것인지
Spawn rate : 초당 몇 명씩 유저를 늘릴 것인지
Host : 테스트 하고자 하는 주소

테스트를 실행하면 웹브라우저에서 다양한 통계 데이터를 확인할 수 있다.

0개의 댓글