SpringBoot

artillery 스트레스 테스트

soonrise 2024. 2. 29. 00:15

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