인프런 커뮤니티 질문&답변

qheogus55님의 프로필 이미지

작성한 질문수

백엔드 애플리케이션 성능 테스트하기

성능 테스트 결과 해석하기

aws ec2 서버에 /hello컨트롤러를 만들어서 강의와 같은 yml을 실행했더니 아래 그림과 같이 뜨는데 서버 성능을 올려줘야 할까요..?

해결된 질문

24.05.25 06:21 작성

·

160

1

1.이런식으로 나오는데 서버 성능을 올려줘야할까요..?
2. 이해한바로는 Scenarios completed : 요청에 대한 응답이 정상적인 개수인데 만약 저렇게 대규모 요청이 왔을때 이런 서버를 유지한다면 유실된 응답수만큼 요청한 사용자가 응답을 못받는거 맞나요?!

ec2 프리티어를 사용중입니다.

config:
target: 'https://onsuho.store'
phases:
- duration: 10
arrivalRate: 5
- duration: 10
arrivalRate: 20
- duration: 30
arrivalRate: 100
- duration: 10
arrivalRate: 20
scenarios:
- flow:
- get:
url: "/hello"



답변 1

0

이준형(Foo)님의 프로필 이미지
이준형(Foo)
지식공유자

2024. 05. 26. 03:48

qheogus55 님 안녕하세요.

 

열심히 성능 테스트를 해보셨군요. :)

질문 주신 내용에 대해 답변드리겠습니다.

 

1.이런식으로 나오는데 서버 성능을 올려줘야할까요..?

-> 테스트 하시려는 트래픽을 받을 수 있도록 만들기위해 시도할 수 있는 여러가지 방법이 있지만, 가장 해보기 쉬운건 말씀하신대로 ec2 인스턴스의 사이즈를 더 높은걸로 바꾸는겁니다. 아마 현재 상태에선 제가 추측하건데 그게 해결 방법이 될 것 같긴 합니다.

지금 하고 있는 요청은

phases:
- duration: 10
arrivalRate: 5
- duration: 10
arrivalRate: 20
- duration: 30
arrivalRate: 100

- duration: 10
arrivalRate: 20

이 3번째 phase에서 초당 100씩 요청이 날아가는 부분에서 문제가 생기고 있을 것 같습니다. 제가 알고있는 바에 따르면, 톰캣은 초기에 'minSpareThreads(기본값 10)' 수 만큼의 스레드를 생성하고, 요청이 늘어나면 'maxThreads(기본값 200)'까지 스레드 수를 늘려나갈겁니다. 근데 20개씩 요청이 오던거에서 한번에 100개로 늘었으니 아마 80개의 스레드를 생성하려고 하는데 작은 사이즈의 인스턴스에서 생성 과정이 너무 느리게 진행되는거 아닌가 생각됩니다. 그러면서 요청은 계속 밀려들면서 타임아웃이 나지 않았을까 추측해봅니다.

 

제 추측이 틀렸을 수도 있으니 해보시고 질문주세요. :)

 

2. 이해한바로는 Scenarios completed : 요청에 대한 응답이 정상적인 개수인데 만약 저렇게 대규모 요청이 왔을때 이런 서버를 유지한다면 유실된 응답수만큼 요청한 사용자가 응답을 못받는거 맞나요?!

-> 넵 맞습니다. 타임아웃으로 떨어진 수 만큼 사용자는 응답을 못받고 있는게 맞습니다.

이런 문제를 막기 위해 성능 개선을 하기도 하고, 요청을 보낸 쪽에서는 Retry 같은걸 하기도 합니다. 물론 저 요청을 보낸게 '사용자'라면 웹 브라우저로 다시 요청하지 못할 수도 있습니다. 혹은 오히려 Retry 요청이 성능상 문제를 일으키기도 하구요. 상황에 따라 해법은 달라질 것 같습니다.

성능 개선에 대한 강의는 지금 제작중이고 다음달 중으로 오픈 가능할 것 같으니 해당 강의를 기대해주세요!

 

여기까지 질문에 대한 답변이 됐길 바랍니다.

또 궁금한 내용 있으면 질문 남겨주세요.

감사합니다.