일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- aws sdk v3
- npm 전역 설치 삭제
- Java
- node.js ec2
- node.js ec2 배포
- node.js ec2 ip접속
- 스트레스툴
- Apache ab
- Apache Benchmark
- Foreign Key (외래 키)
- npm 글로벌 설치 삭제 했는데 실행됨
- 자바
- filezilla
- PostgreSQL CAST
- sql 데이터 추가
- 이것이 자바다
- EC2
- ab 벤치마크
- node.js
- Primary key(기본 키)
- sql 데이터 삽입
- sms 샌드박스
- sns 샌드박스 종료
- html tag
- sms 휴대폰 인증
- SMS sandbox
- AWS SDK for JavaScript v3
- HTML
- COALESCE함수
- HTML 태그
- Today
- Total
망각에 재주 있는 나를 위해 기록하는 곳.
[EC2] Apache Benchmark(ab) 부하 테스트 본문
많이 부족하지만 개인 프로젝트로 진행한 웹페이지는 몇 명까지 버틸 수 있을까? 라는 생각을 했었다. 그렇게 생각만 하고 한동안 잊고 지내다가 갑자기 문득 떠올라 "또 잊기전에 해봐야겠다!"라고 생각하고 구글링을 통해 부하 테스트를 해볼 수 있는 방법을 발견했다. 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를 하나 더 추가하는 것이다. 그리고 여기서 로드 벨런싱이 이루어 진다.
그리고 로드 벨런싱은 각 노드에 부하를 한쪽으로 치우치지 않게 고르게 분산 시키는 것이다.
+)
테스트를 몇 번 진행 했더니 그래프에 굴곡이 생겼다.
(원래 일자였음)
'AWS' 카테고리의 다른 글
[AWS] Node.js 프로젝트 ec2에 배포하기ver.2 (0) | 2024.07.02 |
---|---|
[AWS SNS] 휴대폰 sms 인증 구현 및 SNS 샌드박스 종료 (AWS SDK for JavaScript v3) (0) | 2024.04.06 |
[AWS] Node.js 프로젝트 ec2에 배포하기 후기 - ec2가 자꾸 죽을때 (0) | 2024.03.04 |
[AWS] Node.js 프로젝트 ec2에 배포하기 후기 - mongoDB에러 (0) | 2024.03.04 |
[AWS] Node.js 프로젝트 ec2에 배포하기 4 (0) | 2024.03.04 |