Meme's IT

API 성능 테스트 - Locust 이용하기 본문

기타

API 성능 테스트 - Locust 이용하기

Memez 2023. 11. 3. 10:29

# Locust란?

오픈 소스 부하 테스트 도구

즉, 내가 만든 서버에 많은 사용자들이 동시에 들어올 때 어떤 일이 벌어지는 지를 확인하는 도구

 

사용법은 공식문서 참고

 

// 공식문서 예시파일
import time
from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(1, 5)

    @task
    def hello_world(self):
        self.client.get("/hello")
        self.client.get("/world")

    @task(3)		# 3은 가중치, 위에꺼랑 1:3의 비율로 실행됨
    def view_items(self):
        for item_id in range(10):
            self.client.get(f"/item?id={item_id}", name="/item")
            time.sleep(1)

    def on_start(self):
        self.client.post("/login", json={"username":"foo", "password":"bar"})
  • HttpUser: HTTP 요청을 만드는 가상 유저
  • wait_time = 작업 간 대기시간
  • on_start(): 가상 유저 생성 시 실행
  • @task: 유저가 실행할 작업
  • @task(N): 가중치 =  실행확률, N만큼 높은 확률로 작업을 수행
  • self.client.get : HTTP GET 요청 전송

 

 

검사실행 하는법(서버 열려잇어야함)

locust -f ./locust파일.py

 

 

그리고 나오는 링크 누르면 안나옴

 

localhost:8089로 바꿔서 확인하기

위에는 합쳐서 몇 명이 들어올건지?

두번째는 1초에 몇명 들어올건지?

맨 밑에는 우리 테스트 서버 주소 = http://localhost:8000/

 

결과에서 RPS = 초당 응답 개수

 

이런식으로 그래프로도 확인 가능

 

이건 50th : 100명중 50번째로 응답을 받은 시간 / 95th: 95번째로 응답을 받은 시간

즉, 50 -> 50퍼센트의 사람들은 이시간 내에 모두 응답을 받았다

  • 만약 둘 사이의 간격이 점점 벌어진다면?
    → 50번째 ~ 나머지는 점점 느려진다. 서버가 버거워한다
        '어느 시점에서 느려지는구나' 를 알 수 있다 / 처리해야할 내용이 점점 쌓임(병목현상)
  • 그럼 어떤게 이상적인 그래프 일까?
    → 두 그래프가 일정하게 겹치는 모습

결과 리포트 형식으로 다운로드도 받을 수 있음