망각에 재주 있는 나를 위해 기록하는 곳.

[EC2] Apache Benchmark(ab) 부하 테스트 본문

AWS

[EC2] Apache Benchmark(ab) 부하 테스트

baobabtree 2024. 3. 22. 12:03

많이 부족하지만 개인 프로젝트로 진행한 웹페이지는 몇 명까지 버틸 수 있을까? 라는 생각을 했었다. 그렇게 생각만 하고 한동안 잊고 지내다가 갑자기 문득 떠올라 "또 잊기전에 해봐야겠다!"라고 생각하고 구글링을 통해 부하 테스트를 해볼 수 있는 방법을 발견했다. Apache Benchmark인데 여러곳 둘러보다가 생활코딩에서 아주 오래전에 올린 영상도 있다는 걸 알게 되었다.

 

ec2는 우분투를 사용하고 있다. Apache Benchmark를 설치해준다.

sudo apt-get install apache2-utils

 

여러가지 옵션이 있는데 영상에서 나온 것을 참고로 요청수(-n)와 동시요청 수(-c) 옵션을 사용해 볼 것이다.

(동시요청(c)이 요청수(n)를 뛰어 넘을 수 없다.)

ab -n <숫자> -c <숫자> http://hostname[:port]/path

 

 

예를들어 -n 100 -c 1로 진행하면 아래 처럼 나온다.

 

 

 

특정 게시물에 1000번(n) 요청을 기준으로 동시 접속자(c) 수를 늘려 보면서 정리해 보겠다.

 

-n 1000 -c 1

 

 

-n 1000 -c 10

 

 

-n 1000 -c 50

 

 

-n 1000 -c 100

 

 

-n 1000 -c 200

 

 

-n 1000 -c 400

 

 

 

위의 결과를 아래 표로 정리해 보았다.

요청수(n) 동시 접속수(c) 총 소요시간(초) 초당 처리량 요청당 처리시간(초) 실패
100 1 4.082 24.50 0.04 0
1000 1 37.600 26.60 0.03 0
1000 10 37.847 26.42 0.37 0
1000 50 38.100 26.25 1.90 0
*1000 100 38.442 26.01 3.84 0
1000 200 38.529 25.95 7.70 0
1000 400 38.064 26.27 15.22 0
*100 100 4.495 22.25 4.49 0

총 소요시간은 요청수에 따라 증가하는 것 같고, 유의미한 것은 요청당 처리시간인데, 표 맨 마지막은 혹시 몰라서

요청수를 줄여보고 테스트를 했는데(별표시 행 비교) 큰 차이가 없는걸 보니 역시나 동시 접속수가 관건이었다.

 

적절한 지점에서 미리 스케일 업 또는 스케일 아웃이 필요할 것이다. 간단히 정리하면

스케일 업은 해당 ec2 사양 자체를 더 큰 용량으로 늘리는 것이고

스케일 아웃은 ec2를 하나 더 추가하는 것이다. 그리고 여기서 로드 벨런싱이 이루어 진다.

그리고 로드 벨런싱은 각 노드에 부하를 한쪽으로 치우치지 않게 고르게 분산 시키는 것이다.

 

 

+)

테스트를 몇 번 진행 했더니 그래프에 굴곡이 생겼다.

(원래 일자였음)