박주니 개발 정리

python locust 이용해서 부하 및 스트레스 테스트 하는 방법 본문

python

python locust 이용해서 부하 및 스트레스 테스트 하는 방법

박주니 2024. 9. 4. 17:47
728x90
반응형

1. Locust를 설치합니다. 

pip install locust

 

2. locustfile.py를 생성하고 테스트 스크립트를 작성합니다. 

from locust import HttpUser, TaskSet, task, between

class UserBehavior(TaskSet):
    @task(1)
    def get_example(self):
        # GET 요청 예시
        self.client.get("/api/example")

    @task(2)
    def post_example(self):
        # POST 요청 예시
        self.client.post("/api/example", json={"key": "value"})

    @task(3)
    def put_example(self):
        # PUT 요청 예시
        self.client.put("/api/example", json={"key": "new_value"})

    @task(4)
    def delete_example(self):
        # DELETE 요청 예시
        self.client.delete("/api/example")

class WebsiteUser(HttpUser):
    tasks = [UserBehavior]
    wait_time = between(1, 5)  # 사용자 간의 대기 시간 (1초에서 5초 사이의 랜덤 시간)
    host = "http://localhost:3000"  # 테스트할 서버의 URL

추가 설명

  • host는 현재 테스트를 하고자하는 url를 넣으시면 됩니다. 
  • locust는 local에서는 정상적으로 테스트가 되지 않는 것을 확인했습니다. 실제 ec2에 올린 host로 테스트하시면 정상적으로 locust에서 의도한 테스트를 진행하실 수 있습니다. 

3. 터미널에서 다음 명령어를 실행하여 Locust를 시작합니다. 

locust -f locustfile.py

 

4. http://localhost:8089 접속해서 Locust가 정상적으로 돌아가고 있는 지 확인합니다. 

추가 설명

  • locust -f locustfile.py를 실행하면 http://localhost:8089로 연결해달라는 문구를 확인하실 수 있습니다. 

 

5. 현재 locust에 host가 설정한 host와 동일한지 확인합니다. 

추가 설명

  • Host에 모자이크한 부분이 현재 테스트할 host와 동일한  지 확인합니다. 

6. Number of users와 Ramp up 을 설정해서 Start를 눌러 부하 테스트를 진행합니다. 

추가 설명

  • Number of users : 최대 수용할 수 있는 사용자 수 
  • Ramp up: 초당 동시 접속자수 
  • 예시) Number of users: 1000, Ramp up: 10을 설정
    • 초당 10명씩 동시에 해당 host를 요청하면서 1000명까지 늘어나고 그렇게 늘어난 1000명이 초단위로 번갈아가면서 host에 요청 (부하 테스트) 

7. Start를 눌러서 host 부하 테스트 진행사항을 확인합니다. 

tip

지금 ec2에 설정한 host로 부하 테스트를 진행할경우 테스트하는만큼 비용이 발생될 수 있기 때문에 해당 locust를 활용할때는 각ip에 ACL을 어떻게 제어할 것이고 고의성에 따른 매크로가 확인될경우 block을 어떻게 설정할 것인지 구현하고 테스트하는 목적으로 사용하시는 것을 추천합니다. 

728x90
반응형
Comments