해결된 질문
작성
·
89
·
수정됨
1
처음에는 초당 요청 횟수 x 시나리오수로 총 요청이 온다 고 이해를 했는데 다른 분 질문글을 읽어보니 제가 이해한게 맞나 싶어서 질문합니다.
30초당 3개의 요청을 보내고 시나리오에 2개의 flow가 있다고 했을때 1번 flow는 3개의 api 그리고 2번 flow는 1개의 api라고 한다면 30 초당 3개의 요청을 보내는 횟수인 90개의 요청에서 몇개는 1번 flow 몇개는 2번 flow의 api를 서버로 보내는건지 궁금합니다.
답변 3
1
결론부터, 해당하는 조건에 명확하게 몇번의 api가 실행되는지는 단정할 수 없습니다.
단, 다음과 같이 어느정도 예상은 해볼 수 있습니다.
1초당 3명의 가상 유저를 생성하게 되고, 30초 동안 총 90명의 가상 유저를 생성하게 됩니다.
각 시나리오에 (현재 2개) 가상 유저를 배정해야 하는데, Artilleryt
에서는 비균등하게 배치가 되고 있습니다.
각 시나리오가, 42유저/48유저 (시나리오1/시나리오2) 만큼 배치되었다고 가정 해보면 다음과 같습니다.
1번 시나리오 : 42 * 3 (유저 x api 갯수) = 총 126개의 api 호출
2번 시나리오 : 48 * 1 = 48개의 api 호출
이런식으로 가정해서 확인해볼 수 있습니다.
config:
target: 'http://localhost:8080'
phases:
- duration: 30
arrivalRate: 3
name: Warm up
scenarios:
- name: "login and use some functions"
flow:
- post:
url: "/login"
- get:
url: "/some-function-one"
- get:
url: "/some-function-two"
- name: "just login"
flow:
- post:
url: "/hello"
weight 같은 가중치를 줘서 최대한 균등하게 배정하는 방법또한 소개되는것으로 확인되는데, 정확하게 동작하는지는 저도 테스트는 안해보았습니다.
https://www.artillery.io/docs/reference/test-script#scenario-weights
0
감바스님 안녕하세요~
위에 BeakGwa 님이 적어주신 것과 동일합니다! 너무 잘 설명해주셨네요.
정확하게 몇번 실행되는지 단정할 수 없는 이유는 마지막에 적어주신 것처럼 weight를 줘서 실행할 수 있지만, 해당 weight에 따라 실행될 "확률"이 결정될 뿐, 실제 몇번 실행될지는 알 수 없습니다.
동전의 앞면이 나올 확률이 1/2이지만, 10번 던져서 꼭 5번이 나오는게 아닌 것처럼요.
앞서 다른분이 질문하셨던 내용에도 해당 내용 설명해두어서 링크 첨부합니다~
혹시 추가로 궁금한 내용 있으면 질문 남겨주세요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 감바스님.
시나리오 작성 시 요청 개수와 시나리오 개수의 관계에 대해 질문해주셨네요. 관련해서 유사한 답변이 올라온 게시물을 찾았습니다.
사용자가 여러 시나리오를 작성했고 이들 시나리오가 여러 개의 API 요청을 포함하고 있다면, 각 시나리오가 독립적으로 실행될 때마다 해당 시나리오 안의 모든 API 요청이 실행됩니다. 예를 들어, 한 시나리오 안에 3개의 API 호출이 있고 다른 시나리오 안에 1개의 API 호출이 있을 경우, 각 시나리오가 독립적으로 실행될 때 총 요청 수는 해당 API 호출 수의 합입니다.
추가로 참고하실 만한 유사한 질문과 답변은 아래 링크를 통해 확인하실 수 있습니다:
해당 질문에서 시나리오별로 요청이 어떻게 분배되는지와 관련된 내용은 아래 링크를 통해 확인할 수 있습니다:
- 로그인 한 유저만 접근 가능한 API도 부하테스트가 필요할까요?
위 답변들을 통해 시나리오 설계 시 각 시나리오별 API 호출이 독립적으로 수행된다는 점과 그로 인해 발생하는 전체 요청의 계산 방식 등을 이해하는 데 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
BeakGwa님 자세한 설명 감사합니다!!