API의 성능을 테스트하기 위해 스트레스 테스트가 필요하다. 쉽게 테스트 상황을 만들어 시간을 확인 하고 싶다면 Artillery를 사용할 수 있다. 설치와 사용법이 간단하고 결과도 깔끔하게 확인할 수 있는 좋은 방법이다. 호출 횟수, 시간, 간격, 시나리오 등을 파일로 설정하여 테스트를 해볼 수 있다.
설치
npm install artillery
전역 설치를 원한다면 -g 옵션을 사용할 수 있다.
사용법
명령어로 바로 사용할 수 있지만 여러가지 설정을 편하게 관리할 수 있도록 파일(json, yml)을 만들어 사용하자.
예시는 yml 파일이다.
config에서는 기본 설정을 할 수 있다.
target : 테스트할 도메인
timeout : timeout 기준
- timeout은 테스트 환경 -> 서버 -> 서버동작 -> 테스트 환경까지의 시간 기준이다. 따라서 현재 사용하고 있는 네트워크의 성능에 따라 발생할 수 있고, 서버만의 동작시간 기준이 아니기 때문에 서버동작 시간만 중요하다면 timeout을 크게 잡는 것이 좋다.
phases : 테스트 상황을 설정한다.
duration : 반복할 횟수 (기본 1초 간격이다.)
arrivalRate : 1회당 호출 수
scenarrios : 호출의 상황을 설정한다. 어떤 API 호출(데이터 포함)할지, 여러 동작일 경우 순서 등
기타 자세한 설정은 아래 사이트에서 확인하자.
Welcome – Artillery Docs
Learn how to get up and running with Artillery with reference docs, guides, tutorials and other resources
www.artillery.io
사용 명령어
npx artillery run [설정 파일 path]
결과 해석
맨 윗줄 http.codes.200 은 호출 결과의 status code의 개수이다.
①은 서버의 동작시간만 집계한 결과이고
②는 테스트 환경에서 서버를 거쳐 다시 테스트 환경까지 온 결과이다.(현 네트워크에 영향을 받음)
min : 총 호출(성공한) 중 가장 짧은 시간
max : 총 호출(성공한) 중 가장 긴 시간
median : 총 호출(성공한) 중 가운데(5000개의 경우 2500번째) 시간
p95 : 총 호출(성공한) 중 상위 95%에 해당하는 호출이 걸린 시간
p99 : 총 호출(성공한) 중 상위 99%에 해당하는 호출이 걸린 시간
①번 결과를 기준으로 위 결과중에서 median, p95, p99의 간격이 짧을 수록 안정적인 서버이며 전체적으로 시간이 짧을 수록 빠른 서버임을 확인 할 수 있다.
'python' 카테고리의 다른 글
line_profiler : 어디에서 많은 시간이 걸리는지 알아보기 with flask (0) | 2023.07.03 |
---|---|
Pylint : 규칙적인 코드 작성하기 (0) | 2023.06.28 |
[python 그래프] 그래프 설정 (0) | 2020.09.07 |
[python 그래프] 데이터 분석 그래프 종류 (1) | 2020.09.02 |
댓글