본문 바로가기
개발공부/NodeJS

Nodejs 환경에서 Artillery로 부하테스트 하기

by bzerome240 2023. 5. 29.

 

설치

프로덕션 레벨에서는 쓰이지 않기때문에 

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

 

 

 


 

참고 

 

 

 

🧪 Artillery 부하 테스트 사용법

부하 테스트 부하 테스트 (stress test) 란 서버가 얼마만큼의 요청을 견딜 수 있는지 테스트하는 방법이다. 우리는 작성한 API 에 병목 현상과 얼마 만큼의 트래픽을 수용할 수 있는지에 대한 여부

inpa.tistory.com

 

 

NodeJS 환경에서 부하테스트 진행하기(Artillery 이용)

사이드 프로젝트에서 프로모션을 준비하고 있는데 갑자기 이런 걱정이 들었습니다. 갑자기 사용자가 몰려서 서버가 터지면 어떡하지? 현재 서버는 몇 명의 사용자까지 감당할 수 있지? 지금까

node-js.tistory.com

 

 

728x90
반응형

댓글