반응형
What it is?
Locust는 오픈소스 부하테스트 도구 입니다. 웹 사이트 (또는 기타 시스템)의로드 테스트 및 시스템이 처리 할 수있는 동시 사용자 수를 파악하기위한 것 이며, 서버에서 지원하는 초당 요청 수 (RPS)를 대략적으로 알 수 있습니다.
Locust는 메뚜기라는 뜻으로 테스트 중에 메뚜기 떼가 웹 사이트를 공격한다는 것에서 착안된 이름이라고 합니다. 각 메뚜기 (또는 원하는 경우 테스트 사용자)의 동작은 사용자가 정의하고 웹 UI에서 실시간으로 군집 프로세스를 모니터링합니다. 이렇게하면 실제 사용자가 들어가기 전에 테스트와 병목 현상을 확인 할 수 있습니다.
Locust는 완전히 이벤트 기반이므로 단일 컴퓨터에서 수천 명의 동시 사용자를 지원할 수 있습니다. 다른 많은 이벤트 기반 앱과 달리 콜백을 사용하지 않고 경량 프로세스를 사용합니다. 이를 통해 콜백으로 코드를 복잡하게 만들지 않고도 Python에서 매우 간단한 시나리오를 작성할 수 있습니다.
Why Locust?
- 구현이 쉬워서 작은 규모 프로젝트에 적합합니다.
- python으로 api 테스트 코드를 작성할 수 있습니다. (python에 능숙할때 유리)
- 설치와 실행이 간단하고 대시보드를 통해 가시적으로 테스트 결과를 볼 수 있습니다.
Locust Install
EC2 instance AMZ linux2 에 설치
sudo yum install -y python3-devel
sudo yum install -y libevent-devel
sudo yum install -y gcc
sudo python3 -m pip install locust
Locust 실행
- api테스트할 내용을 담은 python 파일이 필요함
locustfile.py 예제
import random
from locust import HttpUser, TaskSet, task, between
class User(HttpUser):
# 실제 api를 테스트할 함수 @task(1) 이런식으로 숫자를 넣어서 call 하는 비중을 높힐 수 있음
@task(2)
def get_all(self):
self.client.get("/employees")
@task(1)
def get_id(self):
emp_id = ["1","2","3","4","5"]
self.client.get("/employees/"+ random.choice(emp_id)
@task
def get_all(self):
self.client.get("/test")
def on_start(self):
print("START LOCUST")
def on_stop(self):
print("STOP LOCUST")
## 최소 0.5 최대 1.5 초동안 기다렸다가 api call을 하겠다라는 설정
wait_time = between(0.5, 1.5)
실행 명령어
locust -f locustfile.py
반응형
'IT > DevOps' 카테고리의 다른 글
[kubernetes] ExternalDNS란? 개념부터 설치까지 정리(AWS EKS) (3) | 2021.09.28 |
---|---|
Pod Anti-Affinity를 사용한 Kubernetes pod Multi-AZ 배포 (2) | 2021.09.14 |
Kubernetes PVC를 Amazon EFS로 구성하기 (0) | 2021.09.13 |
[Devops] Springboot 프로젝트 Docker이미지 만들기(Dockerizing) (0) | 2021.09.10 |
[Devops] React 프로젝트 Docker이미지 만들기(Dockerizing) (0) | 2021.09.10 |