Jmeter 사용법 & Option

choko's avatar
Jun 29, 2024
Jmeter 사용법 & Option
 
  • Java 설치
    • Requires Java 8+
  • Jmeter 설치
wget http://www.gtlib.gatech.edu/pub/apache/jmeter/binaries/apache-jmeter-5.3.tgz tar xf apache-jmeter-5.3.tgz rm apache-jmeter-5.3.tgz
  • 실행
    • GUI 모드 실행 : ./apache-jmeter-5.3/bin/jmeter.sh
    • Non-GUI 모드 실행 : ./apache-jmeter-5.3/bin/jmeter
  • Test Plan 설정
    • Counter 추가 : Test Plan 우클릭 → Add → Config Element-> Counter 추가
      • Http Reqeust에서 사용 할 accountDemo에서 사용 하기 위해 추가
      • ex) 1~60000 까지 1씩 증가
        • notion image
      • 각 Worker별 Counter Value값이 겹치지 않게 설정 하려면 apache-jmeter-5.3/bin/user.properties설정을 바꾸면 된다.
      • ##마지막 줄에 추가 offset=0 offset1=10000000 offset2=200000000
      • 해당 설정을 추가한 worker의 경우 Starting Value값에 ${__P(offset, )}을 사용하면 설정 값 부터 숫자가 시작되며, increment값 만큼 숫자가 증가하면서 보내게 된다.
      • 여기서 다른 worker의 경우 숫자를 더 많이(ex:10000) 설정하면 다른 worker는 시작 value값이 10000부터 시작하는 것이다.
      • 하지만 다음 worker 의 숫자 이상의 데이터를 전송 할 경우 다시 value값이 겹칠 수 있으므로 충분한 차이를 벌려놔야 한다.
      • 각 Test Plan 마다 Value값이 겹치지 않게 하려면 Number format 을 각각 다르게 추가 해 주면 된다.
    • Tread Group 추가 : Test Plan 우클릭 → Add → Threads(Users) → Thread Group 추가
      • notion image
      • Name : 테스트 이름 (중요하지 않음)
      • Comment : 테스트 설명 (중요하지 않음)
      • Action to be taken after a Sampler error : 샐플러가 에러시에 취할 행동 ( Continue로 설정하면 에러와 무관하게 루프를 돔)
      • Number of Thread : 쓰레드를 동시에 몇개 생성할지 ( 동시에 실행 시킬 트랜잭션 수)
      • Ramp-Up Period : 쓰레드를 Ramp-Up Period시간동안 실행해라는 의미이다. 단 균등하게 시간을 나눠서 실행하려고 노력한다. 예를 들어 Nomber of Threads가 10인데 Ramp-Up Period가 60이면 10개의 쓰레드가 6초간격으로 동작하려고 한다. 근데 그렇게 안될 수도 있다.
      • Loop Count : 스레드의 반복 횟수를 의미한다. 10이면 10번 반복한다. Forever에 체크하면 무한 반복한다.
      • Delay Thread creation until needed : 스레드의 생성을 필요할 때까지 기다린다. 체크를 해제하면 안기다리고 날리는데 반응성은 더 좋아지긴 하는데 안정성을 위해서 체크해 두자.
      • Scheduler : 위의 모든 작업을 스케줄화 해서 할 수 있다.
      • Duration : Scheduler를 체크했을때만 사용가능. Thread Properties의 총작업을 하는 시간을 의미한다. 예를들어 100초를 정하면 위의 작업을 딱 100초동안 실행한다. 100초안에 걸리는 작업이면 조기에 정지되지만 위의 작업이 100초를 넘어간다면 더이상 실행하지 않고 멈춘다.
      • Startup delay : 위의 작업을 실행하기 위한 유예기간을 의미한다. 쓰레드 그룹이 한개일때는 별 필요없지만 쓰레드 그룹을 여러개 돌릴떄는 서로 차등을 줄 수 있다.
      • 참고 : 기본적으로 jmeter는 각 요청 사이에 딜레이 없이 요청을 보내기 때문에, 짧은 시간 내에 너무 많은 요청을 함으로 써 서버 과부하 문제가 발생할 수 있습니다. 이런 경우 타이머를 사용하여 스레드에서 생성하는 각 요청을 지연 시킬 수 있습니다.
        • Constant Timer: 고정 시간의 딜레이를 가짐
        • Gaussian Random Timer: 임의의 시간 범위의 딜레이를 가짐
    • HTTP Request 추가 : Tread Group 우클릭 → Add → Sampler → HTTP Request 추가
      • notion image
      • Name , Comment 는 중요 하지 않음
      • 이미지와 같이 테스트 환경에 맞추어 작성 ( protocol, ip, port, body data 등)
  • 위에서 작성한 TestPlan을 JMeter Non-GUI mode로 실행하는 방법
    • jmeter -n -t {TestFileName}.jmx -l {LogFileName}.jtl
    • 테스트 종료 후 생성 된 로그파일(LogFileName.jtl)을 Jmeter GUI에서 로딩하여 결과 확인 가능
    •  
       
       
Share article

Tom의 TIL 정리방