TIL(Today I Learned)

TIL - Apache JMeter를 이용한 성능 테스트

Happy._. 2024. 7. 8. 22:37
  • 응답 시간(Response Time)
    • 클라이언트가 서버에 요청을 하고 그 요청에 대한 응답을 받을 때까지 걸린 시간
    • 응답 시간 분류
      • 처리 시간(Processing Time): 실제 서버가 요청을 처리하는 데 걸린 시간
      • 대기 시간(Latency Time): 클라이언트와 서버 간에 데이터를 주고받는 데 걸리는 시간
    • 응답 시간(Response Time) = [동시 사용자 수 / 초당 요청 수(TPS)] - 인지시간(Think Time)
      • 인지 시간(Think Time): 두 가지 연속적인 작업 사이에 소비하는 시간
  • TPS(Throughput)
    • 서버가 초당 처리할 수 있는 요청의 개수
    • TPS가 높을수록 초당 처리할 수 있는 요청의 수가 많음

Apache JMeter 설치 및 실행

다음 링크에서 apache-jmemter-x.x.x.zip 파일을 다운로드 후 압축 풀기를 한다.

https://jmeter.apache.org/download_jmeter.cgi

압축이 풀린 폴더의 bin 경로에 있는 jmeter.bat 파일을 실행한다.

cmd 창과 함께 Apache JMeter 창이 뜨면 실행 성공이다.

Apache JMeter 사용방법

Test Plan → [Add] → [Threads (Users)] → [Thread Group]

 

Thread Properties 설정

  • Number of Threads (users): 가상 사용자(Thread)의 수
  • Ramp-up period (seconds): 요청 주기(초)
  • Loop Count: 테스트를 반복하는 횟수, Infinite - 무한대 호출

다음 이미지는 1000명의 사용자가 1초에 한 번씩 계속 요청을 보내는 설정이다. (1초당 1000회의 요청)

Loop Count를 별도 설정하지 않으면 Infinite가 자동 체크 됨

 

Thread Group → [Add] → [Sampler] → [HTTP Request]

 

HTTP Request 설정

  • Protocol [http]: http 또는 https로 설정
  • Server Name or IP: 로컬 테스트는 localhost로 설정
  • Port Number: 서버의 포트(예: 8080)
  • Http Request
    • Http Method 지정: GET / POST / PUT / DELETE 등
    • Path: 요청을 보낼 URI(예: /todos)

 

Thread Group → [Listener] → [View Result Tree]

Listener: Sampler의 요청에 대한 결과를 수집해서 결과 값을 보여줌(요청을 보낸 후 성공, 실패, 응답 시간, 응답 메시지 등을 확인할 수 있음)

 

[Start]

 

[Yes]: 설정한 내용을 파일로 저장

 

실행 결과에 대해 Request, Response를 확인할 수 있다.

 

Thread Group → [Add] → [Listener] → [Summarty Report] → [Start]

 

테스트에 대한 요약 결과를 확인할 수 있다.

  • #Samples: 서버에 요청한 횟수
  • Average: 평균 응답 시간(ms)
  • Min: 최소 응답 시간(ms)
  • Max: 최대 응답 시간(ms)
  • Std. Dev.: 표준 편차, 요청에 대한 응답 시간이 일정하고 안정적인가를 확인, 값이 작을수록 안정적
  • Error: 에러율(%), 400 또는 500대 에러가 발생한 경우
  • Throughput: 처리량(초당 처리 건수) = TPS
  • KB/sec: 처리량(초당 처리 KB)

테스트 결과를 그래프로 보기 위한 설정

다음 링크에서 압축 파일 다운로드 후 압축을 풀고 lib 폴더 내 파일들을 JMeter의 lib 폴더 내 추가한다.

https://jmeter-plugins.org/?search=jpgc-graphs-basic

 

Thread Group → [Add] → [Listener] → [jp@gc - Transactions per Second]

 

그래프는 다음과 같이 보여준다.