Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- js
- Javascript
- sqld
- QuerySetAPI
- VITE
- TypeScript
- react
- 싸피셜
- 머신러닝종류
- PWA
- 14658
- 데코레이터
- 싸피10기
- vitepwa
- git
- 리액트
- 싸피
- 알고리즘
- 백준
- Python
- SQL
- 셀프넘버
- SSAFYcial
- queryset
- unionfind
- Django
- db
- SSAFY
- 플로이드워셜
- pwa적용하기
Archives
- Today
- Total
Meme's IT
API 성능 테스트 - Locust 이용하기 본문
# 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번째 ~ 나머지는 점점 느려진다. 서버가 버거워한다
'어느 시점에서 느려지는구나' 를 알 수 있다 / 처리해야할 내용이 점점 쌓임(병목현상) - 그럼 어떤게 이상적인 그래프 일까?
→ 두 그래프가 일정하게 겹치는 모습
결과 리포트 형식으로 다운로드도 받을 수 있음
'기타' 카테고리의 다른 글
[Django] 게시판 + 로그인 + 댓글 + 팔로우 기능의 홈페이지 만들기 (0) | 2023.10.20 |
---|---|
HTML에 아이콘을 넣고 싶을 때 (0) | 2023.10.17 |