inblog logo
|
soultree
    Spring

    [Spring] JMeter로 MVC와 WebFlux API 서버 성능 테스트

    Spring Web MVC기반 API 서버와 Spring WebFlux 기반 API 서버의 성능을 테스트하기 위해 JMeter를 사용하여 테스트한다.
    Hi's avatar
    Hi
    Apr 29, 2024
    [Spring] JMeter로 MVC와 WebFlux API 서버 성능 테스트
    Contents
    ✅ JMeter 설치✅ JMeter 실행✅ 쓰레드 그룹 생성✅ 쓰레드 그룹에서 테스트 조건 설정✅ HTTP 요청 생성✅ HTTP 요청 설정✅ Listener 등록 (테스트 결과 보기)✅ 테스트할 서버 실행✅ 테스트 실행✅ 테스트 Disable✅ UPDATE Method 사용 시 주의사항✅ Duration 설정✅ Summary Report
     
    📋
    Spring Web MVC기반 API 서버와 Spring WebFlux 기반 API 서버의 성능을 테스트하기 위해 JMeter를 사용하여 테스트한다.
     

    ✅ JMeter 설치

    notion image
    brew install jmeter 명령어를 통해 jmeter를 설치한다. 나는 기존에 설치했기 때문에 이미 설치되어있다고 떴다. (설치하는 데 시간이 굉장히 오래 걸린다..)

    ✅ JMeter 실행

    기존에 JMeter를 설치했다면 터미널에서 jmeter를 입력하여 GUI모드를 실행한다.
    notion image
     

    ✅ 쓰레드 그룹 생성

    notion image
    Test Plan이라고 써있는 부분을 우클릭하여 Thread Group을 추가해준다.

    ✅ 쓰레드 그룹에서 테스트 조건 설정

    notion image
    • Number of Threads (users)
      • 테스트할 사용자 수
    • Ramp-up period (seconds) 
      • 가상 사용자(가상 사용자 또는 스레드 그룹)가 시간에 따라 시스템에 점진적으로 로드를 증가시키는 기간
      • 테스트를 시작할 때부터 시스템에 동시에 갑작스럽게 과도한 부하가 가해지는 것을 방지하기 위함
      • 예를 들어, 1000명의 가상 사용자를 10초 동안 램프 업하도록 설정하면, 매 초마다 100명의 가상 사용자가 시스템에 추가된다.
    • Loop Count
      • 각각의 스레드(가상 사용자)가 지정된 횟수만큼 테스트를 반복
      • 무한에 체크하면 정지하기 전까지 계속해서 요청을 보냄
     

    ✅ HTTP 요청 생성

    notion image
    마찬가지로 Thread Group을 우클릭하여 HTTP Request를 추가해준다.

    ✅ HTTP 요청 설정

    notion image
    요청을 보낼 Protocol, IP, Method, Path 등을 설정하면 된다.
     

    ✅ Listener 등록 (테스트 결과 보기)

    notion image
    HTTP Request 부분을 우클릭하여 Listner에서 Summary Report를 추가해준다. 필요하다면 다른 것을 추가해서 봐도 좋다!
     

    ✅ 테스트할 서버 실행

    notion image
    나는 MVC 기반과 WebFlux 기반 API 서버의 성능을 테스트하기 위해 각각에 대한 Controller, Service, Repository를 구현했다.
     

    ✅ 테스트 실행

    notion image
    초록색 시작 버튼을 누른 뒤 Summary Report를 확인해보면 요청에 따라 서버 성능에 대한 지표가 나타날 것이다.
     

    ✅ 테스트 Disable

    notion image
    테스트를 하고싶지 않은 쓰레드 그룹이나 HTTP 요청은 Disable을 하여 테스트 대상에서 제외시킬 수 있다.
     

    ✅ UPDATE Method 사용 시 주의사항

    notion image
    notion image
    UPDATE와 같이 Request Body에 json 타입으로 데이터를 전송할 경우 HTTP Header Manager를 해당 요청에 따로 추가해서 Name에는 Content-Type, Value에는 application/json을 넣어줘야 한다.
     

    ✅ Duration 설정

    일정 시간 동안만 테스트를 수행하고 싶다면, 타이머를 적용하고 싶은 Thread Group에 Duration 설정을 추가하면 된다!
    notion image
    → 30초 동안만 테스트를 진행하고 싶으면 Duration에 30을 입력하면 된다.
     

    ✅ Summary Report

    notion image
    • #Samples : 서버에 요청한 횟수
    • Average : 평균응답시간(ms)
    • Min : 최소응답시간(ms)
    • Max : 최대응답시간(ms)
    • Std. Dev. : 표준편차
      • 요청에 대한 응답시간의 일정하고 안정적인가를 확인, 값이 작을수록 안정적이다.
    • Error : Error율(%)
    • Throughput : 처리량(초당 처리건수)
    • KB/sec : 처리량(초당 처리 KB)
    Share article
    Contents
    ✅ JMeter 설치✅ JMeter 실행✅ 쓰레드 그룹 생성✅ 쓰레드 그룹에서 테스트 조건 설정✅ HTTP 요청 생성✅ HTTP 요청 설정✅ Listener 등록 (테스트 결과 보기)✅ 테스트할 서버 실행✅ 테스트 실행✅ 테스트 Disable✅ UPDATE Method 사용 시 주의사항✅ Duration 설정✅ Summary Report

    soultree

    RSS·Powered by Inblog