반응형
Notice
Recent Posts
Recent Comments
Link
코딩일상
서버 부하 테스트 Artillery 본문
반응형
환경 Node.js 가 설치 되어 있어야 합니다.
artillery 테스트를 하기위해서 테스트 방법을 작성을 하여야 합니다.
config:
target: "http://localhost:3000" //요청을 보낼곳
phases:
- duration: 60 //성능 테스트 지속시간
arrivalRate: 5 //매초 만들어내는 가상유저의 수
name: Warm up //테스트 단계 이름
scenarios:
- name: "Search and buy" //성능테스트 시나리오 이름
flow:
- post: //post요청
url: "/search" //post요청을 보낼링크
headers: //post요청시 헤더에 담을 값들
authorization: 'Bearer 토큰값'
- get: //get요청시
url: "/product"
자세한건 artillery 공식사이트 참고 및 레퍼런스들 참고
로컬 환경 테스트시 터미널 하나는 npm start해주고 하나는 명령어 실행
artillery 간단 테스트 시작 명령어(터미널 입력)
npx artillery quick --count 100 -n 50 http://localhost:4001
명령어 의미 로컬에다가 100명의 사용자가 50번씩 총 5천번을 요청한다는 뜻
artillery 시나리오 테스트 시작 명령어(터미널 입력)
npx artillery run --output report.json test.yaml
artillery 테스트 시작 명령어로 만들어진 report를 html 파일로 만들어 주는것 (터미널 입력)
npx artillery report ./report.json
만들어지 html파일에 들어가면 결과들을 표와 그래프 형태로도 볼수있습니다.
결과 보고서 의미
"counters": {
"vusers.created": 5400,
"http.requests": 5400,//전체 요청 갯수
"http.codes.200": 5400,//요청이 올바르게 된경우
"http.responses": 5400,//전체 요청 응답갯수
"vusers.failed": 0, //가상유저가 시나리오 조건을 실패한 경우
"vusers.completed": 5400 //가상유저가 시나리오 조건을 완료한 경우
...생략...
"summaries": {
"http.response_time": {
"min": 13,
"max": 254,
"count": 5400,
"p50": 26.8,
"median": 26.8,
"p75": 34.1,
"p90": 44.3,
"p95": 56.3,
"p99": 111.1,
"p999": 165.7
}
}
...생략...
- max: 가장 오래 걸린 요청
- min: 가장 빠르게 온 요청
- p95: 전체 HTTP transanction 중 가장 빠른 것 부터 95% 까지
- p50: 전체 HTTP transanction 중 가장 빠른 것부터 50% 까지
- p99: 전체 HTTP transanction 중 가장 빠른 것부터 99%
에러 내용들
성능테스트에서 말하는 VUser는 '가상 사용자(Virtual User, Active)를 의미
Error: read ECONNRESET
내 서버에서 병렬적으로 네트워크 요청을 할때 그 갯수가 한계치를 넘어
Error: connect ETIMEDOUT
주로 서버와 연결을 시도할 때 제한시간 안에 연결이 진행되지 않으면 나오는 에러다.
레퍼런스
토큰값을 얻고 진행하는 시나리오
반응형
'개발 공부 > Node.js' 카테고리의 다른 글
[Node.js] 메모리 누수 총 정리(1) (0) | 2024.03.12 |
---|---|
[Node.js] node profiling 하기 (0) | 2024.03.04 |
Sequelize 알고 쓰자 장단점 (0) | 2022.09.16 |
Request param/query/ body 역할 및 차이점 (0) | 2022.07.27 |
REST API의 put 과 patch 는 어떤 차이점 (0) | 2022.07.22 |
Comments