본문 바로가기
Study/Locust

서버 부하 테스트 Locust (2/2)

by Zeromk2 2020. 6. 11.
728x90

자 이제 셋팅을 해보자. 

항상 느끼는 거지만 구글링이나 stackoverflow 형님들에게 지식인 답변들을 찾아다닐 필요가 없다.

공식 홈페이지의 Documentation를 참고하는게 최고다.

일단 인스톨을 하자. pip로 설치할 수 있다.

> pip install locust

 

인스톨이 완료되면 간단한 샘플코드를 작성하고 파이썬 파일로 저장하자 (.py)

코드는 아래처럼 작성했다.

 

from locust import HttpUser, between, task
import random

locust에서 사용할 것들을 임포트 하자.

random은 테스트 시 사용할 일이 있어서 임포트 한 것이니 안해도 무방하다.

 

class UserBehavior(HttpUser):
    wait_time = between(5, 9)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.serial = ['', '', '']

    def on_start(self):
        print('Now Shooting API')

    @task(1)
    def index(self):
        self.usertoken = '<user token>'
        self.headers = {'Authorization': self.usertoken}
        self.url = '<api request endpoint>' + random.choice(self.serial)
        self.client.get(url=self.url, headers=self.headers)

python의 requests로도 api사용이 가능하지만 locust에서도 client. 메소드를 사용해서 API request를 보낼 수 있다. 

API하나만 path parameter 값만 바꿔가면서 쏠거라 이렇게 작성했다.

 

이걸 저장하고 locust 웹 인터페이스를 로컬에 띄워보자.

locust -f file_name.py

 

요렇게 나오면 성공이다.

 

그 다음 http://127.0.0.1:8089 요리로 접속하면 locust의 GUI화면이 나온다.

이제 서버의 뼈와 살을 분리할 수 있는 것이다.

 

Number of total users to simulate는 테스트를 진행 할 총 유저의 수를 입력한다.
10000으로 입력하면 1부터 10000까지 증가하면서 서버에 부하를 준다.

Hatch rate (users spawned/second)는 1초당 몇명의 유저를 증가시킬지 입력하는 곳이다.
10이라고 하면 1초당 10명씩 늘어난다.

Host는 base url을 작성하면 된다.

그리고 Start swarming를 하면 저 API를 쏘는 유저들이 생겨나며 서버에 부하를 주게 된다.

우리서버 튼튼해

QA로써 response time이 1초 미만의 ms 단위인것이 좋을 것 같습니다. 라고 하려고 했는데 

이미 그렇게 잘 되고 있었다.

 

확인하고 나서 테스트 종료하면 간단한 리포팅도 볼 수 있다.

endpoint 숨숨

지금은 간단하게만 사용해봤지만 이후 인원과  API 종류들을 더 늘려가면서 운영과 유사한 상황을 만들어서 테스트 해보려고 한다. 

이번 테스트때 무리한 수치를 잡아서 개발서버를 정말 죽였지만... 다음에도 또 죽일 수도 있을 것 같다. (연쇄 살서마)

제주 삼다수, 2L, 6개오뚜기 진라면 매운맛 멀티팩 120g, 40개크리스피크림도넛 오리지널 글레이즈드, 47g, 6개농협 GAP 하우스 감귤, 1.5kg, 1개주전부리연구소 혼술안주세트, 1세트던킨 딸기 듬뿍 미니도넛 (냉동), 25g, 10개입

“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"

'Study > Locust' 카테고리의 다른 글

서버 부하 테스트 Locust (1/2)  (0) 2020.06.10

댓글