주뇽's 저장소

성능테스트를 위한 JMeter 사용 방법(1-1) 본문

웹개발

성능테스트를 위한 JMeter 사용 방법(1-1)

뎁쭌 2024. 6. 15. 18:59
728x90
반응형

2024.06.15 - [웹개발] - 성능테스트를 위한 윈도우와 Mac에서 JMeter 설치 방법

 

성능테스트를 위한 윈도우와 Mac에서 JMeter 설치 방법

Apache JMeter는 성능 테스트 및 부하 테스트를 위한 도구로 널리 사용된다. 이 가이드는 윈도우와 Mac에서 JMeter를 설치하는 방법을 단계별로 설명한다. 성능 테스트 도구와 JMeter 소개성능 테스트

jypark1111.tistory.com

 

이전 포스팅을 통해 JMeter를 제대로 설치를 했다면 이제 테스트 하고 싶은 API를 테스트하면 된다. 나는 자주 조회하게 되는 인기게시글 100에대한 API 성능 테스트를 진행했다.

 

한글 설정 방법(예제에서는 영어로 진행)

 

1. 쓰레드 그룹 생성

 

스레드 그룹 설정의 각 항목 설명

  1. Number of Threads (users): 100 설명: 가상 사용자의 수를 나타낸다. 이 설정은 한 번에 얼마나 많은 가상 사용자가 동시에 요청을 보낼지를 결정한다. 이유: 100명의 가상 사용자를 설정하면, 동시에 100명이 애플리케이션에 요청을 보내는 상황을 시뮬레이션한다. 이는 애플리케이션이 높은 트래픽을 처리할 수 있는지 테스트하는 데 유용하다. 실제 운영 환경에서 예상되는 최대 동시 사용자 수를 시뮬레이션하여 성능을 평가할 수 있다.
  2. Ramp-Up Period (in seconds): 10 설명: 모든 스레드가 시작될 때까지 걸리는 시간이다. 예를 들어, 100명의 스레드를 10초 동안 램프업하면, 1초마다 10명의 스레드가 시작된다. 이유: 갑작스러운 부하를 방지하기 위해 램프업 기간을 설정한다. 모든 스레드가 동시에 시작되면 서버에 과도한 부하가 발생할 수 있다. 램프업 기간을 설정하면 점진적으로 부하를 증가시켜 서버의 성능을 안정적으로 측정할 수 있다. 이는 실제 사용자가 서서히 증가하는 상황을 시뮬레이션하는 데 도움이 된다.

  3. Loop Count: 10 설명: 각 스레드가 수행할 요청의 반복 횟수이다. 예를 들어, 루프 카운트가 10이면, 각 스레드는 10번의 요청을 보낸다. 이유: 특정 시간 동안 지속적인 부하를 유지하여 서버의 지속적인 성능을 평가하기 위함이다. 각 스레드가 여러 번 요청을 보내도록 하여 서버가 지속적인 요청을 처리할 수 있는 능력을 테스트할 수 있다. 이는 애플리케이션이 지속적인 부하 하에서 안정적으로 동작하는지 확인하는 데 도움이 된다.
  • 동시성 처리 능력: 서버가 동시에 여러 사용자의 요청을 처리할 수 있는지 확인한다.
  • 응답 시간: 부하가 증가함에 따라 서버의 응답 시간이 어떻게 변하는지 측정한다.
  • 안정성: 지속적인 부하 하에서도 서버가 안정적으로 동작하는지 평가한다.

2. HTTP 요청 샘플러 추가

쓰레드 그룹 -> Add -> Sampler -> HTTP Request를 통해 HTTP 테스트를 설정한다.

 

현재 인기게시글 조회이므로 GET요청으로 자신의 서버 IP포트번호, Path를 입력해주면 된다.

현재 나는 로컬에서 테스트를 위해 Spring 부트를 실행하고 있다. 또한 인기게시글을 조회하는 API는 /api/v1/category/popular-posts/100이므로 이를 각각 적용해주면 된다.

Request : GET

Sever IP : localhost

Port Number : 8080

Path : /api/v1/category/popular-posts/100

 

3. 리스너 추가

쓰레드그룹 -> Add -> Listener

 

  • View Results Tree

  • Summary Report

4.  테스트 시작

스타트 버튼을 클릭하고 기다리면 총 1000번의 샘플 후 결과가 나온다. 이 때 초기에는 초기 설정 데이터를 저장할지를 묻는데 자유롭게 선택하면 될것 같다.

 

 

5.  테스트 결과 확인

Summary Report에서 확인해보면 다음과 같다.

 

성능 기준:

  1. Total Requests: 높은 부하를 견딜 수 있는 능력 (예: 수천 개의 요청을 처리할 수 있어야 함)
  2. Average Response Time (ms): 일반적으로 100-300 ms 사이가 바람직함
  3. Minimum Response Time (ms): 100 ms 이하가 이상적임
  4. Maximum Response Time (ms): 500 ms 이하가 바람직함
  5. Standard Deviation (ms): 50 ms 이하로 응답 시간의 일관성이 유지되어야 함
  6. Error Rate (%): 1% 이하
  7. Requests Per Second (RPS): 50 RPS 이상이 바람직함
  8. Received KB/sec: 데이터 수신 속도는 상황에 따라 다르지만, 일반적으로 100 KB/sec 이상
  9. Sent KB/sec: 송신 데이터 속도는 상황에 따라 다르지만, 일반적으로 100 KB/sec 이상
  10. Average Bytes: 응답 바이트 수는 상황에 따라 다르지만, 일반적으로 10000 바이트 이상
Metric Value Analysis
Total Requests 1000 총 1000개의 HTTP 요청이 수행됨
Average Response Time (ms) 18751 평균 응답 시간이 18751 ms로 높음. 성능 최적화 필요
Minimum Response Time (ms) 1731 최소 응답 시간은 1731 ms로 높음
Maximum Response Time (ms) 21930 최대 응답 시간이 21930 ms로 매우 높음. 특정 요청에서 지연 발생
Standard Deviation (ms) 4014.54 응답 시간 변동성이 크며, 표준 편차가 4014.54 ms로 높음
Error Rate (%) 0 모든 요청이 성공적으로 처리됨. 에러 없음
Requests Per Second (RPS) 4.9 초당 처리된 요청 수는 4.9로 낮음. 부하 처리 능력 개선 필요
Received KB/sec 149.34 초당 149.34 KB의 데이터를 수신함
Sent KB/sec 0.71 초당 0.71 KB의 데이터를 송신함
Average Bytes 31419 응답 바이트 수는 평균 31419.0 바이트

 

6.  프로메테우스와 그라파나를 이용한 시각화(선택 사항)

2024.06.15 - [웹개발] - 성능테스트를 위한 JMeter 사용 방법(1-2) 시각화

 

성능테스트를 위한 JMeter 사용 방법(1-2) 시각화

2024.06.15 - [웹개발] - 성능테스트를 위한 JMeter 사용 방법(1) 성능테스트를 위한 JMeter 사용 방법(1)2024.06.15 - [웹개발] - 성능테스트를 위한 윈도우와 Mac에서 JMeter 설치 방법 성능테스트를 위한 윈

jypark1111.tistory.com

 

그냥 리스너에 결과 그래프를 추가해서 시각화 하면 간단하게 그래프로 표시가 된다!

 

ㄷㄷ 성능 개선이 필요해보인다...