Study
[Locust] 서버 부하 테스트 라이브러리
즐거운개발
2022. 9. 14. 20:00
간단한 서비스를 만들었는데 이에 대한 부하테스트를 진행하고 싶어졌다.
직관적이고 파이썬으로 코드수정 가능한 'locust'라는 라이브러리를 발견했다.
회원가입 부하테스트를 예로 들어 사용방법을 간단히 소개한다.
locust 라이브러리 다운
pip install locust
테스트 코드 작성
from locust import HttpUser, task, between, constant
import random
class JoinUser(HttpUser):
wait_time = between(1, 2) # 1~2초에 한번씩 실행
@task
def join_test(self):
mail = 'test' + str(random.randrange(0, 10000000)) + str(random.randrange(0, 1000)) + '@naver.com'
print('mail: ' + mail)
self.client.post('', json={ # 회원가입 post요청 보내기
'email': mail,
'password': 'abc1234',
"birth": 1980
})
def on_start(self): # locust 시작 시 실행
print('Start LOCUST')
def on_stop(self): # locust 정지 시 실행
print('Stop LOCUST')
내가 만든 서비스의 회원가입 기능에 대해 부하테스트를 진행하는 코드다.
1~2초에 한번씩 랜덤으로 요청을 해준다.
locust 실행
locust -f join_test.py
터미널에서 테스트 파일 경로로 이동해 실행해 준다.
Test 조건 입력
Number of users: 요청할 유저 수
Spawn rate: 초당 증가할 유저 수 (요청할 유저수가 100명이면, 100명 될때까지 초당 몇명씩 증가함)
Host: 요청할 호스트 URL
결과 확인
응답시간 (Response Time)과 초당 응답횟수(RPS)를 확인할 수 있다.
위 두개가 제일 중요한 정보인 듯 싶다.
소규모 서비스의 경우 통상 응답시간 1초 이내, RPS 50 이상이면 준수하다고 할 수 있겠다.