개발

JMeter를 사용하여 서버 부하를 테스트 방법

피터JK 2025. 3. 19. 17:57
728x90

JMeter를 사용하여 서버 부하를 테스트하는 방법을 단계별로 설명하겠습니다.


1. JMeter 설치 및 실행

먼저, JMeter가 설치되어 있어야 합니다.
JMeter는 공식 웹사이트에서 다운로드할 수 있습니다:
🔗 Apache JMeter 공식 사이트

  • 다운로드 후 압축을 풀고, bin/jmeter.bat (Windows) 또는 bin/jmeter (Linux/Mac) 실행

2. JMeter에서 부하 테스트 시나리오 작성

부하 테스트를 위해 테스트 플랜(Test Plan)을 설정해야 합니다.

(1) 테스트 플랜 생성

  1. JMeter 실행 후 Test Plan을 선택
  2. Thread Group 추가:
    • Test Plan을 우클릭 → Add → Threads (Users) → Thread Group
    • 설정값:
      • Number of Threads (users): 동시에 접속할 가상의 사용자 수
      • Ramp-Up Period (seconds): 사용자가 몇 초에 걸쳐 증가할지 설정 (ex: 10초 동안 100명 증가)
      • Loop Count: 반복 횟수 (0 또는 Infinite로 설정하면 계속 실행됨)

(2) HTTP 요청 추가

  • Thread Group을 우클릭 → Add → Sampler → HTTP Request 추가
  • 설정값:
    • Server Name or IP: 부하 테스트할 서버 도메인 또는 IP
    • Port Number: 해당 서버의 포트 (예: 80, 8080)
    • Path: 테스트할 엔드포인트 (예: /api/test)
    • Method: GET, POST 등 선택

(3) 리스너 추가 (결과 확인)

  • Thread Group을 우클릭 → Add → Listener 추가
  • 추천 리스너:
    • View Results Tree (요청 및 응답 확인)
    • Summary Report (통계 요약)
    • Aggregate Report (TPS, 응답 시간 등)
    • Graph Results (그래프 형태로 부하 상황 확인)


3. JMeter 부하 테스트 실행

  • 상단 ▶ (Start) 버튼 클릭
  • View Results Tree 또는 Summary Report에서 부하 테스트 진행 상황 확인

4. 테스트 결과 분석 (서버 부하 확인)

테스트가 완료되면 JMeter의 리스너에서 서버 부하 상태를 분석할 수 있습니다.

(1) 서버의 성능 지표 확인

응답 시간(Response Time)

  • 평균 응답 시간 (Avg): 요청이 완료되는 데 걸리는 평균 시간 (ms)
  • 90% / 95% / 99% Percentile: 응답 속도 지표

초당 처리량 (Throughput)

  • 초당 처리할 수 있는 요청 수 (req/sec)
  • Throughput이 낮다면 서버가 부하를 견디지 못하고 있다는 의미

에러율 (Error Rate)

  • 응답 코드 (200, 500, 502 등)를 보고 오류 발생 여부 확인
  • HTTP 500번대 오류가 많으면 서버 과부하 가능성 있음


5. 서버 리소스 모니터링 (부하 확인)

부하 테스트 중 서버의 CPU, 메모리 사용률을 모니터링해야 합니다.

(1) Linux 서버 모니터링

top  # 실시간 CPU 및 메모리 확인
htop  # CPU 코어별 부하 확인
vmstat 1  # 1초 단위로 리소스 상태 확인
iostat -x 1  # 디스크 I/O 상태 확인

(2) Windows 서버 모니터링

  • Ctrl + Shift + Esc → 작업 관리자 → 성능 탭에서 CPU, 메모리 확인
  • Perfmon (Windows + R → perfmon) 실행하여 서버 부하 분석

6. 부하 테스트 최적화

(1) 부하 테스트 설정 조정

  • Ramp-Up 설정 최적화: 갑자기 많은 요청을 보내면 부하 테스트가 비현실적일 수 있음
  • 병렬 실행 최적화: 여러 Thread Group을 사용하여 실제 사용자 시나리오 반영

(2) 서버 성능 튜닝

  • DB Connection Pool 최적화
  • Cache 사용 (EhCache, Redis 등)
  • Thread Pool 설정 조정
  • 로드 밸런서 적용 (Nginx, HAProxy 등)

7. 결과보고서 생성

(1) Tools > Generate HTML report

(2) 파일 선택

  • Summary Report에서 저장한 csv 파일선택
  • jmeter 설치 폴더 bin 폴더에서 기본 프로퍼티 파일 jmeter.properties 파일 선택
  • HTML report 생성할 폴더 선택(해당 폴더는 빈 폴더여야 한다.)

8. 결과보고서 생성파일 확인

 

결론

  1. JMeter에서 Thread Group을 활용해 여러 사용자를 시뮬레이션
  2. HTTP 요청을 설정하여 부하 테스트 진행
  3. Summary Report, Aggregate Report 등에서 성능 분석
  4. 실제 서버의 CPU, 메모리 사용률을 모니터링하여 부하 영향 확인
  5. 필요 시 서버 성능 튜닝 및 부하 테스트 최적화

부하 테스트 후 Throughput, 응답 시간, 에러율 등을 분석하여 서버가 예상된 트래픽을 견딜 수 있는지 확인

728x90