메뉴 건너뛰기

컴' 게시판

본문시작

IT/개발
2012.10.30 14:58

성능테스트툴 jMeter

조회 수 69 추천 수 0 댓글 0
jmeter는 웹프로그램의 성능 테스트 툴입니다.
NOTE:현재는 웹 프로그램이 아닌것도 일부 테스트가 가능합니다. 또한 성능 뿐아니라, 정상작동 여부를 테스트하는데도 쓸수 있습니다.
 
웹프로그램을 개발하다보면, 몇명의 동시접속까지 처리가 가능한지 알아보고
필요하다면, 성능 튜닝을 해야할 경우가 종종 발생합니다.
이러한 경우, 직접 많은 사람들을 동원하여, 동시에 접속해 보는것이 가장 좋은 방법이나,
현실적으로 그러한 여건이 되는경우는 많지않습니다.
 
여러툴을 찾아보다가, apache foundation 홈피에서 jMeter를 찾았습니다.
웹프로그램 성능 및 로드테스트에는 아주 좋네요..
 
구글링 해보면 기본적인 사용법들은 쉽게 찾으실 수 있습니다.
그런부분은 본글에서 상세히 다루지 않을것이며, 쉽게 찾아지지않았던 팁들을 중심으로 
써보겠습니다.(윈도우 os 에서 사용하는 법입니다)
 
1. 다운로드 및 설치
    위주소에서 다운로드 하시고, 압축만 풀고 사용하시면 됩니다.
    또한 쓸만한 그래프를 보실려면, plugin도 같이 설치하시면 좋습니다.
    http://code.google.com/p/jmeter-plugins/downloads/list
    위 주소에서 다운받고, 압축푼 후 JMeterPolugins.jar 파일을  jMeter설치디렉토리libext  안에 복사해주시면
    자동으로 인식합니다.(정상설치되면, 아래 소개될 listener 항목에 @붙은 친구들이 여러개 추가되어있습니다)
2. 실행 
    jMeter 설치 디렉토리의 bin 디렉토리 내에 jmeter.bat을 실행하시면됩니다.
    예) 압축푼경로apache-jmeter-2.8binjmeter.bat
3. 테스트를 위해서 Jmeter에서 사용하는 기본개념을 미리 탑재해야합니다.
   -ThreadGroup(각종 테스트가 일어나는 루트라고 생각하심 됩니다~)
   -샘플러(사용자의 행동을 대행합니다)
   -리스너(처리상황(서버와 브라우저의 상호작용) 및 결과를 데이터나 그래프로 보여줍니다)

 
 간단한 테스트
(다른 사용법 사이트에도 많이 나와있지만.. 독자여러분의 귀차니즘을 고려하여 간단히 소개함)
 구글메인에 2명이  각각 3회씩 접속하는 시나리오를 실행해 보겠습니다.

jmemter.bat 를 실행하면, 아래와 같이 jmeter가 실행되며, 기본적으로 Test Plan과 WorkBench가 왼쪽에 보입니다.




 
Test Plan을 우클릭하여 ThreadGroup을 추가합니다.



아래와 같이, 사람수, 시도횟수를 설정합니다.



http 요청하는 기능을 추가합시다.
아래와 같이 http 요청 샘플러를 추가하면 됩니다.



그리고 아래와 같이 http 요청을 설정합니다.
현재는 테스트용으로 구글 메인페이지를 접속해 보겠습니다.


처리상황 및 결과를 보기위하여 리스너를 추가합니다.




이제 테스트 준비가 모두 끝났습니다.
Play 버튼을 눌러보겠습니다.




테스트 버튼을 누르면 테스트를 시작하며,
차트가 그려지는 것을 볼 수 있습니다.
(Spine visualizer는 전송되는 데이터량을 보여주는 차트라고 하는데, 사실 저도 어떻게 보는줄 모르겠습니다..
다른 유용한 차트가 많으므로, 여러분도 크게 신경 안쓰셔도 됩니다.)



실재로 주고받는 데이터를 확인하려면, View 결과 트리 리스너를 추가합니다.



추가한 다음에 테스트를 다시 돌려보면, 상세한 요청데이터를 확인할 수 있습니다.




서버로 부터 받은 데이터까지 빠짐없이 챙겨주는것을 알 수 있습니다.(꼼꼼하네요..)





실전테스트

샘플테스트는 요기까지 하고 실전으로 들어가 봅시다.

새로운 테스트 플렌을 생성합니다.




아래와 같이 1000명이 10번 도합 10000번 접속하는것으로 설정합니다.
(1000명의 동접자가 각각 10번 시도하는것이므로, 테스트 중간에는 미묘하게 동접이 1000명을 넘을수도 있고 적을 수도 있겠지요.)
또한 Ramp-up period 라는것은 각 사용자간에 접속하는 시간간격을 의미합니다. 아래와같이 2로 두면, 첫번째 사용자가 접속한 2초뒤에 두번째 사용자가 접속하게 됩니다)이 Rampup period를 설정하면, 테스트 초반에는 동시접속자가 서서히 늘어나는 효과가 됩니다.



http request는 직접 입력해 주세요.(별다른 캡쳐는 제공하지 않음..)
저의 경우는 url이 http://localhost/index.php/main/PerformanceTest 이었으므로, 아래와 같습니다.
servername or ip: localhost
path: /index.php/main/PerformanceTest


에러화면: 참고삼아 에러화면을 올려보았습니다.
Http Request에서 서버주소에 http를 붙이면, jMeter에서도 http를 자동으로 붙이므로, 중복되어 에러가 발생합니다.
이때 View Result Tree를 보면 아래와 같이 빨간색으로 도배되어 있습니다.




의미있는 결과를 보기 위해서 
플러그인으로 제공되는 Response Time Over Time 리스너를 추가하였습니다.

(아래의 결과는 시간이 지남에 따라 조금씩 응답시간이 늘어나나 전반적으로는 안정적인것을 알 수 있습니다.
그런데, 가끔 중간에 튀는 구간이 있습니다. 튄다는것은 중간에 응답시간이 확 늘어나는 구간이 있다는 의미입니다.)



또 다른 차트를 보시죠.
동시접속 사용자수에 따른 전송데이터량을을 보려면 Transaction Throughput vs Threads 차트를 보시면 됩니다.



동시접속자수에 따른 응답시간의 변화를 보려면  Response Times vs Threads 를 추가하시면됩니다.
현재 사이트는 나름 동시접속자가 늘어도 안정적인 응답시간을 보여주네요.. 튀는 구간이 있긴하지만..



위의 결과를 토대로 사이트의 성능을 분석하시면 됩니다.
만약 사용자가 늘수록 응답시간이 늘어난다면, 아파치의 성능에 비해서 로직이 무거워서 리소스반환이 늦으므로
튜닝이 필요하다고 볼 수 있습니다.


Http 요청 자동으로 생성하기 

여러 url을 테스트할경우 각각의 http 요청 샘플러를 작성하려면 시간이 아주 많이 필요합니다.
이런 경우를 대비하여 jMeter는 사용자의 웹사이트 이동을 자동으로 레코딩 하는 기능을 제공합니다.
이 기능을 이용하면, 테스트하려는 사이트를 이리저리 돌아다니기만 해도, 필요한 요청을 모두 자동으로 생성해 줍니다.
(사용자의 행동을 똑같이 모사해 냅니다)

workBench (test plan이 아니라..)를 우클릭하여 proxy server를 추가합니다.
(사용자의 모든 행동이 proxy를 통해서 이루어 지므로, 모두 레코딩 할 수 있게 됩니다)


다른것은 설정할 필요없고,
포트만 다른 것과 충돌되지 않도록 설정해 주세요.



그리고 IE의 옵션에서 proxy사용하는것으로 설정합니다. 이때 포트는 위에서 정한것과 같아야 합니다.




jMeter에서 proxy를 시작합니다.





만약 로그인이 필요한 페이지를 테스트하려면, 반드시 Http cookie manager가 추가되어있어야 합니다.




이제 테스트하려는 페이지를 웹브라우저(ie가 아니라도 됨, Firefox는 잘 안되던데 이유를 모르겠음..)를 이용하여
시나리오대로 이동해 봅니다.
그러면, 아래와같이 내 이동경로에 따른 모든 요청이 자동으로 기록됩니다.



이제 proxy를 끄고 (workbench에서 stop 하고, 브라우저의 옵션설정에서도 proxy를 사용안하는걸로 ...)

jMeter에서 play버튼을 눌러보면, 내가 수동으로 했던것과 똑같은 행동을 jMeter가 해줍니다.

참 쉽죠?

추가: 테스트 결과 지우기



  1. 14
    Nov 2012
    10:28

    JavaScript 압축 도구

    CategoryIT/개발 By꿈자 Reply0 Views11 Votes0
    Read More
  2. 13
    Nov 2012
    17:57

    아이패드 미니에 나오는 광...

    Category개인자료 By꿈자 Reply0 Views2059187 Votes0
    Read More
  3. 09
    Nov 2012
    11:11

    IMG태그에 바이러리로 이미...

    CategoryIT/개발 By꿈자 Reply0 Views15 Votes0
    Read More
  4. 31
    Oct 2012
    16:41

    Node.js 한글문서

    CategoryIT/개발 By꿈자 Reply0 Views40151 Votes0
    Read More
  5. 30
    Oct 2012
    14:58

    성능테스트툴 jMeter

    CategoryIT/개발 By꿈자 Reply0 Views69 Votes0
    Read More
  6. 12
    Oct 2012
    16:49

    Mac OS X Lion에 wget 설치

    CategoryIT/개발 By꿈자 Reply0 Views50 Votes0
    Read More
  7. 04
    Oct 2012
    13:12

    아스키 특수문자 표

    CategoryIT/개발 By꿈자 Reply0 Views39 Votes0
    Read More
  8. 06
    Sep 2012
    18:01

    iOS 개발 관련 사이트

    CategoryIT/개발 By꿈자 Reply0 Views7 Votes0
    Read More
  9. 24
    Aug 2012
    11:33

    Git

    CategoryIT/개발 By꿈자 Reply0 Views103 Votes0
    Read More
  10. 10
    Aug 2012
    15:36

    MySQL Replication

    CategoryIT/개발 By꿈자 Reply0 Views10 Votes0
    Read More
Board Pagination Prev 1 ... 13 14 15 16 17 Next
/ 17