# 테스팅 조건
1. EC2 인스턴스 (t2.micro)에 Apache 웹서버를 설치 후 Jmeter를 활용하여 테스트를 진행
2. 동시 접속자수를 10 > 30 > 100 > 500 > 200 기준으로 늘려가며 서버가 어디까지 견디는지 확인
3. TPS 및 결과뷰를 통해 결과값을 분석하기
Number of Threads (users) : 동시 사용자 수 (쓰레드 생성 갯수)
Ramp-up period (seconds) : 동시에 모든 사용자가 접속하는 시간 (한번의 실행을 몇초동안 완료시킬 것인지 나타내는 값)
- 전체 실행 시간 : 600초면 10분동안 작업을 수행
Loop Count : 모든 사용자 접속 후 서버 페이지 호출 횟수
예시 ) Number of Threads : 100 / Ramp-up period : 10 / Loop Count : 5 일 경우
0.1초마다 유저가 1명씩 접속하며 각 유저는 Test Plan을 5번 반복
조건 1.
Number of Threads (users) : 10명의 사용자
Ramp-up period (seconds) : 1초 (예) 10명의 사용자가 10번의 반복적 수행을 1초안에 완료)
Loop Count : 10번의 반복적 수행
조건1의 결과
- Summary Report 결과 : Error율이 0%로 아주 무난히 테스팅을 통과 하였다.
- Active Threads Over Time
- Response Times Over Time
- Transactions per Second
조건 2.
Number of Threads (users) : 30명의 사용자
Ramp-up period (seconds) : 1초
Loop Count : 30번의 반복적 수행
조건2의 결과
- Summary Report 결과 : Error율이 0%로 아주 무난히 테스팅을 통과 하였다.
- Active Threads Over Time
- Response Times Over Time
- Transactions per Second
조건 3.
Number of Threads (users) : 100명의 사용자
Ramp-up period (seconds) : 1초
Loop Count : 100번의 반복적 수행
조건3의 결과
- Summary Report 결과 : Error율이 0%로 아주 무난히 테스팅을 통과 하였다.
- 10,000번의 요청을 아주 잘 견디는걸 확인 할 수 있다.
- Active Threads Over Time
- Response Times Over Time
- Transactions per Second : 초당 1600개의 요청을 처리 할 수 있는것을 볼 수 있다.
조건 4.
Number of Threads (users) : 500명의 사용자
Ramp-up period (seconds) : 1초
Loop Count : 100번의 반복적 수행
총 50,000의 요청을 수행
조건1의 결과
- Summary Report 결과 : Error율이 30.89%로 3번의 시도중 1번은 접속 실패를 하였다.
- Active Threads Over Time
- 부하가 발생한것을 확인 할 수 있다.
- Response Times Over Time
- Transactions per Second
- failure이 발생한 항목이 상당수 발생한것을 지표에서 확인 할 수 있다.
- View Results in Table
- 접속 실패 건수는 15,447건으로 확인 되었다.
조건 5.
Number of Threads (users) : 200명의 사용자
Ramp-up period (seconds) : 1초
Loop Count : 100번의 반복적 수행
총 20,000의 요청을 수행
조건1의 결과
- Summary Report 결과 : Error율이 15.72%로 접속실패 가 있었음을 나타낸다.
- Active Threads Over Time
- Response Times Over Time
- Transactions per Second
# 자 그러면 현재 10,000번의 요청을 잘 견뎠으나 20,000의 요청에서 15% Error율을 보였다. 현재까지의 결과라면 15,000의 요청에서 어떤 값이 나오는지 확인해 볼 필요가 있다.
조건 6.
Number of Threads (users) : 100명의 사용자
Ramp-up period (seconds) : 1초
Loop Count : 150번의 반복적 수행
총 15,000의 요청을 수행
조건1의 결과
- Summary Report 결과 : Error율이 0%로 정상적으로 모든 요청을 처리한것을 확인 할 수있다.
- Active Threads Over Time
- Response Times Over Time
- Transactions per Second
조건 7.
Number of Threads (users) : 15,000명의 사용자
Ramp-up period (seconds) : 1초
Loop Count : 1번의 반복적 수행
> 다운됨
- CloudWatch EC2 인스턴스 CPU 모니터링 결과, 97.2%까지 상승한 결과 확인 가능
조건 8.
Number of Threads (users) : 2,000명의 사용자
Ramp-up period (seconds) : 10초
Loop Count : 5번의 반복적 수행
> 다운됨
조건 9.
Number of Threads (users) : 1,500명의 사용자
Ramp-up period (seconds) : 10초
Loop Count : 5번의 반복적 수행
> 다운됨
조건 10.
Number of Threads (users) : 1,200명의 사용자
Ramp-up period (seconds) : 10초
Loop Count : 5번의 반복적 수행
- Summary Report 결과 : Error율이 0%로 정상적으로 모든 요청을 처리한것을 확인 할 수있다.
- Active Threads Over Time
- Response Times Over Time
- Transactions per Second
결론, 사용자 수가 많을수록 많은 부하가 발생한다는 것을 확인했다. 그도 그럴것이 하나의 사용자가 하나의 스레드를 잡아 먹는다고 가정하면, 사용자의 수가 많은 부하를 일으킬 것이다. 사용자가 일단 접속하고 발생한 loop 부하는 사용자의 수로인해 발행하는 부하보다 상대적으로 적은 부하를 발생하는것을 확인 할 수 있었다. 고로 부하는 사용자의 수가 중요하다...!!
- 오늘은 여기까지... 다음에는 t2.micro를 4개 묶어서 스케일링을 시키고, ELB를 통해 스케일 아웃 및 스케일 인을 구성했을때 부하를 어디까지 감당하는지 알아봅시다.
'테스트 > EC2 + Apache + Jmeter 부하 테스트' 카테고리의 다른 글
EC2 인스턴스 + Jmeter 부하테스팅 (오토 스케일링) (0) | 2021.10.24 |
---|