티스토리 뷰

728x90





 

JMeter는 다른 아파치 재단의 프로젝트들과 같이 공개소프트웨어이며 100% 자바기반의 성능 테스트 도구이다. 

설치하는 것도 아주 간단해서

http://jmeter.apache.org/ 에서 설치파일을 다운로드하고 설치할 경로에 압축을 푸는 것만으로 설치가 끝난다. 

프로그램 실행은 "bin/jmeter.bat" 파일을 더블클릭하면 된다.

그림1. Apache JMeter 메인화면

  확장

 


널리 알려진 
JMeter Plugins 을 사용하면 JMeter 에서 제공하지 않고 있는 다양한 기능들을 사용할 수 있다. 

플러그인 설치는 http://code.google.com/p/jmeter-plugins/downloads/list 에서 최신 버전의 패키지를 다운로드하고 

압축파일에 포함된 JMeterPlugins.jar 를 JMeter 설치 위치의 ${JMETER_HOME}/lib/ext 에 복사한다.

JMeter 는 디폴트로 드레드 카운터를 JTL 파일들에 저장하고 있지 않는다. 
JMeter JTL 파일을 사용할 계획이라면 아래와 같이 ${JMETER_HOME}/bin/jmeter.properties 파일을 수정하여야 한다. (아직 이해가 오지 않고 있음. )

변경 전

 #jmeter.save.saveservice.thread_counts=false

    변경 후

     #jmeter.save.saveservice.thread_counts=true


    Ι■ 이제 JMeter  을 다시 시작한다. JMeter Plugins 에서 제공하는 기능들은 이름이 모두 jp@gc 로 시작되기 때문에 쉽게 구분이 가능하다. 

    그림2. JMeter Plugins



    Ι■ JMeter 에서 파일로 저장하기 기능을 사용할 계획이라면 각 플러그인 모듈에서 Configure 버튼을 클릭하고 

         Save Active Thread Counts 항목을 체크하고 저장한다. 

    그림3. JMeter Plugins 기능들의 Configure 화면


    Ι■ JMeter 을 사용하다 보면 OutOfMemoryException 이 발생하는 경우가 있는데, 
         이경우 $JMETER_HOME/bin/jmeter.bat 파일에서  HEAP 와 NEW 값을 아래와 같이 변경한다.

    set HEAP=-Xms512m -Xmx1024m

    set NEW=-XX:NewSize=256m -XX:MaxNewSize=256m






     부하테스트

     


    Ι■ 부하테스트는 JMeter 에서 제공하는 기본 ThreadGroup 가 아닌 

         JMeter Plugins 에서 제공하는 Stepping Thread Group (이하 Thread Group) 을 사용하여 단계적으로 부하를 더 많이 줄수 있도록 하였다.
         여기에서 Thread 는 사용자를 의미한다. 

         새로운 Test Plan 을 생성하고 아래 그림과 같이 Add > Threads(User) >jp@gc - Stepping Thread Group 을 추가한다. 

    그림4. Stepping Thread Group 추가


    Ι Stepping Thread Group 설정에서 값을 조정하여 어떻게 부하를 줄 것인가를 설정한다. 

         그래프를 보면 이해가 더 쉽다. 

         문서에서는 5초 간격으로 5명 사용자를 생성하며 최대 100 명 까지 생성한다. 

         이 상태를 500 초동안 유지하다가 15초 간격으로 5 명씩 사용자를 제거하도록 하였다. 

    그림5. Stepping Thread Group 설정


    Ι■ 이제 실제 HTTP 요청을 다음과 같이 실행하도록 설정한다. 

    로그인(여러 사용자로 로그인 처리를 수행하기 위하여 CSV 파일을 사용한다.)

    특정 페이지 조회





    Ι■ 직접 HTTP Request 을 설정하지 않고  HTTP Proxy Server 를 사용하여 로컬 브라우저에서  접속하는 페이지들을 녹화하여 사용할 수 도 있다. 
         본 문서에서는 사용하지 않았다. 
         HTTP 페이지 호출은 아래 그림6과 같이 좌측 트리에서 jp@gc - Stepping Thread Group 을 선택하고
         Add > Sampler > HTTP Request 을 클릭하여 추가한다.

      그림6. HTTP Request 추가


    Ι■ 이제 어떻게 해당 URL 을 호출할 것인가를 지정한다. 

         여기에서는 POST 방식으로 username, password 파라메터 값을 전달하도록 하였다.

      그림7. HTTP Request 설정



    Ι■ 그림7에서 값을 표시할 때 ${username} 형식으로 설정한 것은 CSV 파일에서 데이터를 읽어 사용하기위서이다. 

         CSV 파일 데이터는 그림8과 같이 CSV Data Set Config 를 추가하여 정의할 수 있다. 

         ※ CSV Data Set Config 는 로그인 HTTP Request 와 동일한 레벨에 위치하여야 한다.

      그림8. CSV Data Set Config 추가



    Ι■ 여기에서는 CSV 파일은 엑셀데이터를 CSV 파일로 변환하고 헤더데이터만을 제거하여 사용하였다. 

         설정은 아주 간단하며 읽어들일 파일이름과 내부적으로 사용할 데이터 이름을 지정하면 된다. 

         이름을 앞의 HTTP Request 설정에서 파라메터 값으로 설정하면 된다.

      그림9. CSV Data Set Config 설정



    Ι■ 이제 Thread Group 에 HTTP Cookie Manager 을 추가하여 로그인 이후 일정동안 세션이 유지될 수 있도한다. 

         HTTP Request 는 순차적으로 발생되기 때문에 로그인 이후에 인증이 필요한 페이지 요청을 설정하여 사용하는 경우에 필수 적이다.

      그림10. HTTP Cookie Manager 추가


    Ι■ 이제 마지막으로 부하테스트 결과를 다양한 그래프로 볼 수 있도록 Thread Group 에 필요한 Listener 를 추가한다. 

         추가는 좌측 트리에서 Thread Group 를 선택하고 그림11 과 같이 추가하면 된다.

       그림11. 결과 리포팅을 위한 Listener 추가



    Ι■ 부하 테스트 결과는  문서에서는  그림12 과 같이 다양한 결과 뷰를 추가하였다. 

         기본적으로 차트 결과는 기본으로 제공되는 Graph Results 는 보기가 어렵기 때문에 

         JMeter Plugins 에서 제공하는 다양한 그래프를 사용하는 것이 더 도움이 될 것 같다.

    그림12. 결과 리포팅 Listener




    Ι■ 부하테스트는 Run 메뉴를 사용하거나 아래와 같이 실행 아이콘을 클릭하면 된다.

     그림13. 테스트 실행 메뉴




     부하테스트 결과

     


    Performance Engineering은 시스템의 목표 성능 (응답 시간과 동시 접속자수)을 정의 하고, 이를 달성하기 위해서, 시스템의 구조를 반복적으로 개선하는 작업을  이야기 한다.


    Ι■ 1. View Results Tree

    테스트된 결과들에 대한 상세 정보를 볼 수 있다. 

    여기에서는 실제 테스트 계획을 수행하기 이전에 등록된 HTTP Request 가 올바르게 동작하는가를 확인하는데 유용하게 사용되었다.




    Ι■ 2. Summary Report

    테스트된 결과들에 대한 요약 정보를 보여준다. 



    Ι■ 3. jp@gc - Response Times Over Time

    테스트 시간에 따른 응답 시간을 그래프로 보여준다. 문서에서는 5초 간격으로 5명 사용자를 생성하며 최대 100 명 까지 생성한다. 이상태를 500 초동안 유지하다가 15초 간격으로 5 명씩 사용자를 제거하도록 하였다. 


    Ι■ 4. jp@gc - Response Times vs Threads

    사용자 변화에 따른 응답 속도 



    Ι■ 5. jp@gc - Transaction Throughput vs Threads

    사용자 변화에 따른 초당 처리 건수


    Ι■ 6.  jp@gc - Composite Graph
    여러 결과 그래프를 함께 보여준다. 문서에서는 다음 결과 그래프들을 함께 보여주도록 설정하였다.
    • jp@gc - Active Threads Over Time

    • jp@gc - Response Times Over Time

    • jp@gc - Transactions per Second 




      리모트

     


    JMeter 의 remote 기능을 사용하여 여러 시스템을 사용하여 부하테스트를 수행할 수 있다.
    이를 위하여 다음과 같은 사항을 점검하여야 한다. 

    • 부하 테스트를 실행할 모든 클라인언트 장비들의 방화벽을 OFF 한다.

    • 부하 테스트를 실행할 모든 클라인언트 장비들은 동일한 서브넷이여야 한다.

    • 부하 테스트를 실행할 모든 클라인언트 장비에서 부하 테스트 대상 서버에 접근이 가능하여야 한다. 

    • 부하 테스트를 실행할 모든 클라인언트 장비에 동일 JMeter 버전이 실행되어야 한다.


    앞에서 사용되었던 JMeter 프로그램 폴더를 압축하여 부하 테스트를 실행할 원격 클라인언트 장비에 설치한다. 설치는 압축을 푸는것으로 충분하다.
    이제 각 클라인언트 장비에서 ${JMETER_HOME}/bin/jmeter-server.bat 을 더블 클릭하여 프로그램을 실행한다. 
    JMeter GUI 가 실행되는 장비에서  ${JMETER_HOME}/bin/jmeter.properteis 파일을 수정하여 원격 클라이언트 장비 IP 을 설정한다. 
    remote_hosts 값에 IP 를 적어주면 된다. 
    remote_hosts=112.136.181.44,112.136.181.45,112.136.181.46
    설정이 완료되면 JMeter 을 실행한다. 
    Run 메뉴의 Remote Start 에서 특정 IP 을 선택하면 해당 IP 의 리모트 JMeter 을 통하여 테스트가 실행된다. 
    Remote Start All 을 클릭하면 등록된 모든 리모트 JMeter 을 통하여 부하테스트가 진행된다.

























    댓글