본문 바로가기
python

Artillery : 서버 성능 테스트(부하 테스트)

by _avocado_ 2023. 7. 10.

API의 성능을 테스트하기 위해 스트레스 테스트가 필요하다. 쉽게 테스트 상황을 만들어 시간을 확인 하고 싶다면 Artillery를 사용할 수 있다. 설치와 사용법이 간단하고 결과도 깔끔하게 확인할 수 있는 좋은 방법이다. 호출 횟수, 시간, 간격, 시나리오 등을 파일로 설정하여 테스트를 해볼 수 있다.


설치

npm install artillery

전역 설치를 원한다면 -g 옵션을 사용할 수 있다.


사용법

명령어로 바로 사용할 수 있지만 여러가지 설정을 편하게 관리할 수 있도록 파일(json, yml)을 만들어 사용하자.

예시는 yml 파일이다.

yml 파일 예시

config에서는 기본 설정을 할 수 있다.

target : 테스트할 도메인

timeout : timeout 기준

    - timeout은 테스트 환경 -> 서버 -> 서버동작 -> 테스트 환경까지의 시간 기준이다. 따라서 현재 사용하고 있는 네트워크의 성능에 따라 발생할 수 있고, 서버만의 동작시간 기준이 아니기 때문에 서버동작 시간만 중요하다면 timeout을 크게 잡는 것이 좋다.

phases : 테스트 상황을 설정한다.

duration : 반복할 횟수 (기본 1초 간격이다.)

arrivalRate : 1회당 호출 수

 

scenarrios : 호출의 상황을 설정한다. 어떤 API 호출(데이터 포함)할지, 여러 동작일 경우 순서 등

기타 자세한 설정은 아래 사이트에서 확인하자.

Artillery 공식 페이지

 

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의 간격이 짧을 수록 안정적인 서버이며 전체적으로 시간이 짧을 수록 빠른 서버임을 확인 할 수 있다.

댓글