본문으로 바로가기

Timer

category JMeter 2020. 6. 11. 16:41

좀 더 정교한 Test Plan을 위해서는 사용자가 서비스를 이용하는 패턴과 유사해질 필요가 있다.

화면상의 버튼 또는 링크를 누르고 내용을 입력하거나 글을 읽다 보면 서버에 요청을 보내지 않고 대기하는 시간이 발생한다.

이 시간을 "Think Time" 이라고 한다.

이 Think Time을 잘 표현해야만 좀 더 정교한 Test Plan이 완성된다.

Constant Timer

  • 일정 시간을 지연하는 지연 시간 기반 Timer다.

  • 지연이 발생한 후에 Sampler가 실행되므로, 1과 2 사이에 2초 지연을 주고 싶으면 2에 Timer를 추가한다.

 

Constant Throughput Timer

  • 처리량(Throughput)을 기준으로 하는 Timer 다.
  • 처리량을 일정하게 유지하기 위해 지연시킨다.
  • 응답시간 100ms이면 900ms를 지연하고 응답시간이 500ms로 증가하면 500ms를 지연하는 방식으로 처리량을 일정하게 유지시켜 준다.

  • Target throughput : 분당 처리량을 설정한다. 60이면 초당 1번 요청한다.
  • Caculate Throughput base on : 입력한 Throughput 값을 Thread 별로 계산할 것인지 모든 Thread를 합쳐서 계산할 것인지를 설정한다.

 

Synchronizing Timer

  • 동시에 요청하기 위해 지연 한다.
  • 여러 Thread가 존재할 때 각각의 Thread는 같은 요청을 하더라도 응답시간이 다르게 마련이다.
  • 이때 응답시간이 빠른 Threads가 가장 느린 Thread에 맞춰서 기다렸다가 동시에 요청하게 한다.

Timer Plugin : Pacing Controller

https://www.sten.or.kr/club/club_main.php?cmd=board&cb_id=cb_Jmeter&page=1&sfl=&stx=&sop=&sca=Plugin+%C0%DA%B7%E1%BD%C7&wr_id=461&sca=Plugin+%C0%DA%B7%E1%BD%C7

 

성능테스트 목표 설정 시, 가장 중요한 부분이 Throughput 이다.
Throughput은 일반적으로 처리량을 뜻하며, TPH, TPM, TPS 등 단위 시간당 처리 건수로 구분할 수가 있다.
성능테스트에서는 보통 초당 처리건수 즉 TPS(Transaction Per Second)를 사용한다.

TPS = 성능테스트 툴에서 할당된 사용자 수 / 요청 간격

TPS를 제어하는 방법은 2가지가 있다.

 

  1. 성능테스트 담당자가 TPS 제어
    • Think Time
    • Pacing Time
  1. 성능테스트 툴에서 TPS 제어
    • Constant Throughout Timer

일단 성능테스트 툴에 TPS제어를 맡기는 방법은 좋은 선택이 아니다.
TPS를 명시적으로 사용자수/Request Interval 형태로 제어할 수 없기 때문에 불필요하게 많은 사용자를 할당해야 하는 경우도 생길 수 있다. 반대로 사용자를 적게 할당하면 아무리 테스트를 해도 목표 TPS를 못맞추는 경우도 생길수가 있다.

 

개인적으로 성능테스트 담당자가 TPS제어하는 방법을 선호합니다. Think Time을 이용한 TPS 제어는 약간의 문제점이 있습니다.어떤 업무에 대해서 응답시간을 1User로 측정해보니 평균 2초가 나왔다고 가정하고, 이 업무에 대해서 목표 TPS가 2라고 하면, 목표 TPS를 맞추기 위해서 사용자수를 10명할당하고, Think Time을 3초로 설정했다고 가정합시다.그럼 아래와 같은 패턴으로 부하가 발생하겠죠.

 

(1번째 요청)      3초 think Time    (2번째 요청) 3초 think Time          (3번째 요청)    3초 think Time
| ---------->| ============= |----------->| ==============| ------------>|================|

위와 같은 패턴에서 부하량이 적을 때는 응답시간이 2초를 유지하여 각 User 별로 5초의 요청간격을 유지해 줄수 있으나 부하량이 많아지면 응답시간이 늘어날 수가 있습니다. 그렇게 돼면 목표로 하는 2TPS를 만족못할 수도 있습니다.그래서 불필요하게 무조건 3초의 Think Time이 아니라, 3초의 시간을 여유롭게 사용할 수 있는 방법이 Pacing Time 입니다. 위와 같은 조건에서 Pacing Time이 5초로 설정되어 있다고 가정하면, 만약 응답시간이 3초로 늘었더라도 Pacing Time으로 적용된 경우에는 성능테스트 툴에서 2초를 쉬고 다음 요청을 보냅니다. 즉 응답시간이 5초 이내인 경우에 대해서는 무조건 요청간격을 5초로 맞춰줄 수 있습니다.결론적으로 TPS를 명확히 제어하기 위해서는 Request Interval을 제어할 수 있는 Pacing Time 방법을 사용해야 합니다. Jmeter에서도 Request Interval을 제어할 수 있습니다.

 


댓글을 달아 주세요

대마도사 블로그
블로그 이미지 대마도사 님의 블로그
MENU
VISITOR 오늘4 / 전체17,683