설치
프로덕션 레벨에서는 쓰이지 않기때문에
npm i -D artillery
맛보기 실행
- --count : 가상의 사용자 수
- -n : 요청 횟수
- --rate : 초당 요청
ex) 100명의 사용자가 50번의 요청을 각각 보내는 것 = 5000번 요청
npm start
npx artillery quick --count 100 -n 50 http://localhost:8001
ex) 60초 동안 5명이 초당 10번 요청을 보낸다. = 3000번 요청
artillery quick --duration 60 --rate 10 -n 5 http://localhost:5000
시나리오 설정 파일 (yaml 또는 json)
config
- target : 테스트할 URL
- phases ex) 60초 동안 매초 1개의 요청을 보내기
- duration : 성능을 측정하는 시간
- arrivalRate : 매초 새로운 가상 유저를 만드는 수
senarios
- name : 시나리오 이름
- flow : 시나리오 순서대로 적기
- get / post
ex) yaml
config:
target: "https://URL"
phases:
- duration: 60
arrivalRate: 1
name: Warm up
scenarios:
# We define one scenario:
- name: "just get hash"
flow:
- get:
url: "/v5/search/%EB%A1%AF%EB%8D%B0%EB%B0%B1%ED%99%94%EC%A0%90?c=13,0,0,0,dh"
ex) yaml
config:
target: "https://example.com/api"
phases:
- duration: 60
arrivalRate: 5
name: Warm up
- duration: 120
arrivalRate: 5
rampTo: 50
name: Ramp up load
payload:
path: "keywords.csv"
fields:
- "keyword"
scenarios:
- name: "Search and buy"
flow:
- post:
url: "/search"
json:
kw: "{{ keyword }}"
capture:
- json: "$.results[0].id"
as: "productId"
- get:
url: "/product/{{ productId }}/details"
실행하기
npx artillery run artillery/loadtest.json
npx artillery run artillery/loadtest.yaml
실행결과
- http.codes : 응답 코드
- http.requests : 총 요청 수
- http.response_tile : 응답 시간
- min : 최소 응답 시간 / max : 최대 응답 시간 / median : 평균 응답 시간
- p95 : 느린 요청 중 95% 응답 시간 / p99 : 느린 요청 중 99% 응답 시간
viusualize된 그래프 확인하기
npx artillery run -o myReport loadtest.json // 테스트 결과 데이터 파일 myReport 생성
npx artillery report myReport
참고
728x90
반응형
'개발공부 > NodeJS' 카테고리의 다른 글
Nodejs 싱글스레드 (0) | 2023.06.07 |
---|---|
마이크로서비스와 Nodejs (0) | 2023.06.06 |
Express 웹서버 구축 - route, body-parser, compression, cookie-session, express-session, session-file-store, cors, morgan, multer, response-time, connect-timeout (0) | 2023.05.28 |
[NodeJS] json-server 이용하기 (0) | 2023.05.27 |
Nodejs 내장 모듈과 객체 (0) | 2023.05.27 |
댓글