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 변동이 심할 경우, 로드밸런싱과 오토스케일링 적용 필요