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
'SpringBoot' 카테고리의 다른 글
카프카를 활용한 메세지 큐 (0) | 2024.04.02 |
---|---|
스프링 시큐리티 5.X에서 6버전으로 변경 (0) | 2023.12.31 |
스프링부트에서 RabbitMQ 메세지 큐로 사용 (1) | 2023.12.17 |
메세지큐 톺아보기 (2) | 2023.12.07 |
프로젝트 설정 : DB 연동 및 민감한 정보 마스킹 (0) | 2023.10.25 |