Apache JMeter의 손쉬운 사용법

자바 환경에서 동작하는 JMeter 를 이용하면 GUI 만을 이용하여 성능/부하 테스트를 할 수 있다.

사용 순서

  1. Jmeter를 내려받는다. http://jmeter.apache.org/download_jmeter.cgi
  2. 압축을 풀고 Jmeter를 실행한다.
  3. Test Plan에 자식 노드 Thread Group를 추가한다.
  4. Thread Grup에서 Properties에 원하는 값을 넣어준다.
    • Number of Thread는 테스트할 사용자의 수
    • Ramp-Up Period는 테스트를 몇 초에 걸쳐서 실행할 것인지 기간을 말한다
    • 만약 Number of Thread가 10이고, Ramp-Up Period가 100이라면 각각의 Thread가 10초마다(100/10) 시작된다. 하나의 Thread가 실행되고 10초의 여유 시간을 가지고 다음 Thread를 실행하는 것이다.
  5. Loop count에는 이 Thread를 몇 번 반복할지 적어준다.
    • 만약 요청(Request)에 헤더 값을 설정해 줘야 한다면, Thread Group에 자식노드 HTTP Header Manager를 추가한다.
  6. Name과 Value값을 넣어주면 설정이 완료된다.
    • 예: Name에 Content-Type, Value에 application/json을 적어주면 Content-Type이 application/json으로 설정된다.
  7. Thread Group에 자식 노드 HTTP Request를 추가한다.
  8. HTTP Request의 Web Server 란에 서버 이름(혹은 IP)와 포트 번호를 설정 한다.
  9. HTTP Request의 Path에 요청을 보낼 경로를 적어준다.
    • 예: /about/company.html
  10. HTTP Request의 Method를 Get으로 설정한다.
  11. HTTP Request에 자식 노드 Listener를 추가한다.
  12. 여러 종류의 Listener가 있는데, View Results Tree는 각각의 요청에 대한 응답 결과를 보여주고, Summary Report는 종합적인 테스트 결과를 테이블로 보여준다. 그리고 Spline Visualizer는 종합 결과를 그래프로 보여준다.
    • 만약 여러 Thread Group에 대한 종합 결과를 보고 싶다면, Test Plan에 자식 노드로 Listener를 추가하면 된다.

Thread & Loop count 상관관계

사용하다가 문득 생각이 나는 게 있다. 예를 들어,

  • 10 thread (users) + 5 loop
  • 50 thread + 1 loop …은 둘 다 결과적으로 50개의 sample을 제공하는데, 서로 관계가 어떻게 되는지 궁금했다:

JMeter로는 실제 사용자보다 더 빠르게 서버에 리퀘스트를 보낼 수 있기 때문에 시스템에 더욱 더 부하를 줄 수 있다. 예를 들어, 실제 사용자가 페이지가 뜨기를 기다렸다가 10초 후에 다음 링크를 클릭한다면 (thinking time), JMeter로는 1초 (같은 시간) 안에 10배 가량의 부하를 줄 수 있는 셈인 것이다.

그렇기 때문에 하나의 JMeter thread의 초당 리퀘스트 숫자만으로 10명 이상의 사용자를 시뮬레이션 할 수 있다. 10개 스레드 * 5회 반복의 경우 10명의 사용자가 주어진 순서 (예: 메인 페이지 - 로그인 - 페이지 뷰 - … )를 각각 5회 반복하는 것이기 때문에 반복하는 것이 큰 의미가 없을 수 있다.

The number of threads in the thread group is the maximum number of connections the server will see at any point. The loop simply iterates but at any given time not more than 10 requests will be made in parallel

유용한 팁 스크랩

Written on June 10, 2014