본문 바로가기

SpringBoot

artillery 스트레스 테스트

0. Node.js 환경설정

아틸러리는 Node.js 환경에서 작동함으로 node.js, vsCode를 세팅합니다.

 

1. 아틸러리 세팅하기

Artillery Script를 저장할 폴저를 만들고 공식 문서에서 작성된 설치 문구를 터미널에 입력합니다.

npm install -g artillery@latest

 

2. 아틸러리 스크립트 작성

먼저 아틸러리 스크립트를 활용하기 위해서 Learn Core Concepts에서 Test Scripts를 기반으로 작성합니다.

yaml 파일 형식으로 되어있으므로 스크립트를 작성할 .yaml파일을 생성합니다.

config:
  target: http://www.duktown.site/ 
  phases:
    - duration: 60
      arrivalRate: 1
    - duration: 300
      arrivalRate: 10
scenarios:
  - flow:
      - get:
          url: "/posts"

*위 스크립트는 60초동안 1명씩 총 60회 테스트 후 300초동안 10명씩 총 3000회 테스트하도록 구성되어 있습니다.

 

target: 테스트 대상 사이트 주소

phases : 테스트강도설정

  • duration: 요청시간(초)
  • name: 단계에붙일이름(필수아님)
  • arrivalRate: 동시접속자수

scenarios: target이서버주소이므로 나머지url에 어떤요청을 넣을지입니다.

  • flow: 순차적으로요청넣을것들
  • get: get요청을 넣겠다는뜻
  • url: “서버주소를제외한상세url”

윈도우의 경우 아래 명령어를 사용하여 부하테스트를 실행할 수 있습니다.

artillery run --output report.json cpu-test.yaml

 

위와 같이 결과창이 나왔다면 리포트를 볼 수 있도록 아래 명령어를 작성합니다.

그럼 json 파일을 ,html파일로 대시보드 형식으로 볼 수 있습니다.

artillery.cmd report .\report.json

 

3. 리포티 해석을 위한 정보

  • http.codes.200: 상태 코드가 200(OK)인 HTTP 응답 수
  • http.request_rate: 초당 HTTP 요청 수
  • http.requests: 총 HTTP 요청 수
  • http.response_time: 최소, 최대, 중앙값95번째 백분위수 및 99번째 백분위수 응답 시간을 포함한 HTTP 요청의 응답 시간에 대한 통계
  • http.responses: 수신된 총 HTTP 응답 수
  • vusers.completed: 테스트를 완료한 총 가상 사용자 수
  • vusers.created: 테스트 중에 생성된 총 가상 사용자 수
  • vusers.created_by_name: test.yaml 파일에 정의된 각 시나리오에 대해 생성된 가상 사용자 수
  • vusers.failed: 테스트 중 실패한 총 가상 사용자 수
  • vusers.session_length: 최소, 최대, 중앙값, 95번째 백분위수 및 99번째 백분위수 세션 길이를 포함하여 가상 사용자의 세션 길이에 대한 통계

중앙값과 95번째 백분위 값이 큰 차이가 나지 않으면 비교적 안정적인 서버라고 볼 수 있을 것입니다. 따라서 http.response_time을 기반으로 응답시간을 확인해봅니다. 참고로 저는 50초동안 1500으로 테스트한 경우 TimeOut이 생기면 요청 실패도 확인할 수 있었습니다. 

 

 

[공식문서] https://www.artillery.io/docs

 

Welcome – Artillery Docs

Learn how to get up and running with Artillery with reference docs, guides, tutorials and other resources

www.artillery.io