TIL(Today I Learned)/Apache JMeter Test
[부하 테스트 - 배포환경] CPU 사용률 70% 테스트, 부하 분산을 위한 서버 확장의 필요성
jiyoon0000
2025. 2. 18. 11:13
테스트 개요
1. 목표
:이중 서버 환경에서 CPU 부하율 및 TPS 처리 검증
- 대량의 트래픽이 발생하는 환경에서 서버 이중화(Scale Out)가 성능에 미치는 영향을 검증
- 서버 2대를 사용하여 부하를 분산하고, CPU 사용률과 TPS 변화를 분석
- 서버 1대와 2대의 환경을 비교하여, 트래픽 증가에 따른 부하 분산 효과를 확인
2. 목적
- CPU 사용률 70% 유지 목표 : 서버의 안정적인 운영을 위해 적정 부하 수준을 설정하고 성능 평가
- TPS 분석 : 서버 확장 전후의 트랜잭션 처리량 변화를 측정하여 성능 개선 여부 확인
- 확장 전략 수립 : 서버 한 대 기준으로 적절한 사용량을 유지하는지 확인하고, 예상 운영 가능 범위를 정의
3. 테스트 환경
:서버 및 인프라 환경
항목 | 사양 |
로드밸런서 유형 | Application Load Balancer(ALB) |
로드밸런싱 방식 | AWS ALB(라운드 로빈, HTTP/HTTPS 트래픽 분산) |
ALB 타겟 그룹 | EC2 인스턴스 2대(Spring Boot 기반 REST API) |
DBMS | MySQL |
서버 개수 | 2대(분산 부하 적용) |
테스트 도구 | Apache JMeter |
테스트 방식 | TPS 기반 부하 테스트 |
4. 테스트 시나리오
- AWS ALB가 트래픽을 2대의 서버로 자동으로 분산하도록 설정
- JMeter에서 동시 접속자를 증가시키면서 부하 테스트 진행
- 각 서버별 CPU 사용률 측정 및 TPS 비교 분석
테스트 결과
1. 테스트 조건 및 결과 비교
테스트 | 설정 값 (Users-Seconds-Loop Count) |
평균 TPS | 서버 1 CPU 최대 사용률 | 서버 2 CPU 최대 사용률 |
Test 1 | 100-10-1000 | 약 180 ~ 240 | 100% | 82% |
Test 2 | 70-7-700 | 약 150 ~ 210 | 67% | 51% |
Test 3 | 80-8-800 | 약 160 ~ 230 | 69% | 63% |
2. 테스트 결과 그래프
*Test 1 : 100-10-1000
*Test 2 : 70 - 7 - 700
*Test 3 : 80 - 8 -800
3. 결과 요약
- TPS(초당 트랜잭션 수)
- TPS 는 테스트 설정 값에 따라 변화하지만, 대체로 180~200 TPS 수준에서 안정적으로 유지
- 요청 수가 다르더라도 동일한 비율의 데이터를 투입하면 그래프의 증가 패턴이 유사하다는 것을 볼 수 있음
- CPU 사용률
- 부하 테스트를 진행하며 서버 2대의 CPU 사용률을 측정한 결과, 부하 초기에는 CPU 사용률이 급격히 증가하지만 이후 안정적인 범위로 유지
- CPU 사용률이 높아질수록 TPS도 증가하지만, 일정 수준 이상에서는 TPS 증가폭이 완화됨
- TPS 안정화 구간
- 부하 테스트 초반에는 TPS가 급격히 상승하는 초기 부하 적응(워밍업) 구간이 존재
- 일정 시점 이후에는 TPS 변동이 줄어들며 180 ~ 200 TPS 범위 내에서 안정적인 상태 유지
- TPS 안정화까지 걸리는 시간은 약 30~60초 정도로, 이 후에는 일정 트랜잭션 처리 속도를 유지
- 서버 2대 운영 시, TPS가 안정화 된 후에도 CPU 사용률이 적절히 유지되며 트래픽을 감당 가능
결과 분석
1. 결과 분석
- Test 1 : 100 - 10- 1000
- 초기 CPU 100%까지 상승, 이후 안정화되었지만 데이터 처리가 완료되어 CPU 사용률이 점진적으로 하락
- TPS는 180 ~ 240 으로 유지되며, ALB를 통한 부하 분산이 정상적으로 작동하여 서버 2대가 동일한 수준으로 부하를 처리함
- Test 2 : 70 - 7 - 700
- CPU 사용률이 서버당 50% ~ 60% 정도로 안정적인 상태 유지
- TPS는 약 150 ~ 210 으로 유지되며, 부하가 상대적으로 적은 환경에서도 일정 TPS 유지 가능
- 이중 서버 환경에서 가장 안정적인 부하 수준. (Warm Up)
- Test 3 : 80 - 8 - 800
- CPU 사용률이 서버당 60% ~ 70% 정도로 유지되며, TPS는 160 ~ 230으로 유지
- 적절한 부하 분산을 유지하면서 TPS를 높일 수 있는 최적 설정 (Basic)
2. 서버 1대 기준 예상 사용량 및 확장 전략
- 서버 1대 기준 예상 운영 가능 범위
- 현재 이중 서버 환경에서 평균 TPS 180 ~ 200 유지됨
- 단일 서버로 환산하면 평균 TPS 는 약 90 ~ 100 수준
- CPU 70% 유지 기준으로 서버 1대당 최대 100 ~ 120 TPS 까지 안정적으로 처리 가능
- 예상한 값을 넣어 테스트
- 예상 서버 확장 필요 조건
- 현재 설정에서 서버 2대 기준으로 200 TPS를 안정적으로 유지 가능
- 만약 TPS가 300 이상으로 증가할 경우, 서버 3대 이상 필요
- 500 TPS 이상에서는 Auto Sacling 환경이 필수적
예상 TPS | 필요한 서버 개수 (CPU 70% 유지 기준) | 확장 전략 |
100 TPS 이하 | 1대 | 단일 서버 운영 가능 |
200 TPS 수준 | 2대 | 현재 설정 유지 가능 |
300 TPS 이상 | 3대 이상 | 로드 밸런싱 최적화 필요 |
500 TPS 이상 | 5대 이상 | Auto Scaling 도입 고려 |
결론 및 전략
1. 결론
- 이중 서버 환경에서 부하를 적절히 분산하며 안정적인 운영 가능
- 서버당 70% 이하의 CPU 사용률을 유지하면서, 200 TPS를 처리할 수 있음
- 단일 서버 기준으로 약 100 TPS까지 안정적으로 처리 가능
- 트래픽 증가 시 로드밸런싱 최적화 및 Auto Scaling 도입 필요
2. 향후 운영 및 확장 전략
- 현재 2대 서버 운영으로 200 TPS 수준까지는 안정적인 서비스 운영 가능
- 트래픽이 증가하면 3대 이상으로 확장 필요
- 로드밸런서 최적화 및 캐싱 최적화 적용 고려
- TPS 변동이 심할 경우, 로드밸런싱과 오토스케일링 적용 필요