Grinder를 이용한 BMT와 결과분석

조회 수 12779 추천 수 0 2010.09.03 04:21:27
cubebridge *.64.48.56
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석
 
Grinder란?
Java기반의 Bench Mark Tool 이다.


Grinder로 진행 가능한 테스트
- Load Testing
- Capacity Testing
- Functional Testing
- Stress Testing


Grinder의 구조
Grinder는 3개의 process로 구성되어 있다.
-    Worker processes
  • ● Jython test scripts 해석하고 테스트를 수행하는데 사용할 worker threads
-    Agent processes
  • Worker processes를 관리.
-    The console
  • 다른 processes를 조정.
  • 대조하여 통계로 표시하여 결과를 수립.
  • 스크립트 편집 및 배포.

Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image002.jpg


Grinder설치방법
Grinder의 사용을 위해서 기본적으로 Java가 설치되어 있어야 한다. 설치를 위한 별도의 작업은 필요치 않다.
-    Grinder를 다운로드(http://sourceforge.net/projects/grinder/) 받는다. 테스트된 버전은 grinder-3.4 이다.
-    다운 받은 파일을 원하는 경로에 압축을 풀어 놓는다.
-    풀어놓은 폴더에 들어가 bin디렉토리를 만든 후 Grinder설정 파일들을 bin디렉토리에 둔다.

Grinder설정방법

Grinder의 사용을 위해 몇 가지 환경 설정이 필요하며, 이는 windows환경과 Unix/Linux환경에서 약간의 차이가 있다.
-    Windows환경
  • Grinder환경 설정 파일 등록 setGrinderEnv.cmd

set GRINDERPATH=D:\04.Utilities\11.BMT_tools\grinder-3.4
set GRINDERPROPERTIES=D:\04.Utilities\11.BMT_tools\grinder-3.4\examples\grinder.properties
set CLASSPATH=%GRINDERPATH%\lib\grinder.jar
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_16
PATH=%JAVA_HOME%\bin;%PATH%

  • Grinder Agent실행 파일 등록 startAgent.cmd

set GRINDERPATH=D:\04.Utilities\11.BMT_tools\grinder-3.4
call D:\04.Utilities\11.BMT_tools\grinder-3.4\bin\setGrinderEnv.cmd
echo %CLASSPATH%
java -cp %CLASSPATH% net.grinder.Grinder %GRINDERPROPERTIES%

  • Grinder Console실행 파일 등록 startConsole.cmd

call D:\04.Utilities\11.BMT_tools\grinder-3.4\bin\setGrinderEnv.cmd
java -cp %CLASSPATH% net.grinder.Console

  • Grinder Proxy실행 파일 등록 startProxy.cmd

call D:\04.Utilities\11.BMT_tools\grinder-3.4\bin\setGrinderEnv.cmd
java -cp %CLASSPATH% net.grinder.TCPProxy -console -http > grinder.py


-    Unix/Linux

  • Grinder환경 설정 파일 등록 setGrinderEnv.sh

#!/usr/bin/ksh
GRINDERPATH=(full path to grinder install directory)
GRINDERPROPERTIES=(full path to grinder.properties)/grinder.properties
CLASSPATH=$GRINDERPATH/lib/grinder.jar:$CLASSPATH
JAVA_HOME=(full path to java install directory)
PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH PATH GRINDERPROPERTIES

  • Grinder Agent실행 파일 등록 startAgent.sh

#!/usr/bin/ksh
. (path to setGrinderEnv.sh)/setGrinderEnv.sh
java -cp $CLASSPATH net.grinder.Grinder $GRINDERPROPERTIES

  • Grinder Console실행 파일 등록 startConsole.sh

#!/usr/bin/ksh
. (path to setGrinderEnv.sh)/setGrinderEnv.sh
java -cp $CLASSPATH net.grinder.Console

  • Grinder Proxy 실행 파일 등록 startProxy.sh

#!/usr/bin/ksh
. (path to setGrinderEnv.sh)/setGrinderEnv.sh
java -cp $CLASSPATH net.grinder.TCPProxy -console -http > grinder.py


-    Grinder설정 파일 grinder.properties(;로 표시된 parameter는 주석처리 됨.)

grinder.script = grinder.py
# Grinder가 이용할 script의 이름
grinder.processes = 50
# Grinder가 사용할 worker process의 개수
grinder.threads = 1
# 한 개의 process가 생성할 worker thread의 개수
grinder.runs = 50
# 작업 반복 횟수, 0으로 설정할 경우 무한대.
; grinder.consoleHost = consolehost
; grinder.consolePort
grinder.logDirectory = log
# log가 쌓일 directory의 이름
grinder.numberOfOldLogs = 0
# 백업로그의 개수, 설정한 만큼 작업에 의한 백업로그가 생기게 된다.
; grinder.hostID = myagent
; grinder.logProcessStreams = false
; grinder.initialSleepTime=500
; grinder.sleepTimeFactor=0.01
; grinder.sleepTimeVariation=0.005
; grinder.processIncrement = 1
; grinder.processIncrementInterval = 10000
; process.initialProcesses = 1
; grinder.duration = 60000
; grinder.debug.singleprocess = true
; grinder.dcrinstrumentation = false
; grinder.jvm = /opt/jrockit/jrockit-R27.5.0-jdk1.5.0_14/bin/java
; grinder.jvm.classpath = /tmp/myjar.jar
; grinder.jvm.arguments = -Dpython.cachedir=/tmp
; grinder.useConsole = false
; grinder.reportToConsole.interval = 100
; grinder.reportTimesToConsole = false


Grinder실행방법
windows환경에서의 실행방법을 예로 설명한다. Unix/windows의 경우 Xwindows환경에서 수행해야 GUI환경의 테스트 툴을 이용할 수 있다.
-    startConsole.cmd실행
 Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image004.jpg
cmd파일을 실행하면 위와 같이 cmd창이 생기면서 아래와 같이 UI환경이 나타난다.
 Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image006.jpg
적색으로 표시된 부분이 아직 활성화 되지 않았다. 이는 실행에 필요한 Agent가 준비되지 않았다는 뜻이며, 현재 상태에서는 Grinder를 이용하여 어떤 테스트도 할 수 없다. 따라서 아래의 파일을 수행하여 agent를 구동 시킨 후 적색으로 표시된 부분이 활성화 되었는지 확인해야 한다.
-    startAgent.cmd실행
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image008.jpg  
위의 startAgent.cmd가 수행된 후 아래와 같이 적색으로 표시된 부분이 활성화 된다. 활성화 된 상태에서 테스트 진행이 가능해 진다.
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image010.jpg  


Script파일 생성방법
테스트를 진행하기 위해서는 테스트에 이용할 script파일이 필요하다. 정해진 규칙에 맞춰 작성된 script를 사용할 수도 있고, 실제 사이트에 사용하는 web browser를 통하여 패턴을 추출하여 스크립트로 만들어 사용할 수도 있다. 위의 “Grinder설정방법”에서 생성한 startProxy.cmd파일을 이용하여 web browser를 이용한 패턴 추출이 가능하다. 아래는 TCPProxy를 사용하여 script를 생성하는 방법을 나타낸 그림이다.
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image012.jpg  
-    web browser에서 proxy설정 방법(IE 8기준)

  • 메뉴 → 도구 인터넷 옵션을 선택
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image014.jpg  
  • 연결tab클릭 후 하단의 “LAN설정”버튼 클릭
 Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image016.jpg
  • LAN설정 창 하단 프록시 서버에 사용자 LAN에 프록시 서버 사용 체크 후 “고급”버튼 클릭
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image018.jpg  
  • 프록시 설정 창 최상단 HTTP란에 주소:“localhost”, 포트:”8001” 기록 후 모든 프로토콜에 같은 프록시 서버 사용 체크
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image020.jpg  
위와 같이 설정된 후 확인 버튼을 클릭하여 설정 변경을 완료한다.

-    startProxy.cmd실행
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image022.jpg  
cmd파일을 수행하면 적색으로 표시된 TCPProxy Console이 보여지게 되며, 8001번 port로 Proxy deamon이 뜨게 된다.
-    생성방법

  • 위의 창이 생긴 후 설정해 놓은 web browser를 이용하여 테스트를 원하는 패턴을 수행.
  • startProxy.cmd를 수행한 경로에 grinder.py(grinder.properties grinder.script파라미터에 기록된 형식으로)라는 파일이 생성.
  • 생성된 파일을 grinder.properties가 있는 경로(grinder script파일 default경로이며 변경 가능)에 옮겨 놓고 테스트 진행.
  • 설치 폴더의 example 디렉토리에 여러 sample파일들이 있어 참조가 가능하다.

-    기타 웹브라우저 Proxy설정 방법

  • FireFox: 메뉴 도구 하단 설정항목 선택 popup창 상단 설정버튼 클릭 프록시 설정 후 저장
  • Netscape: edit preferences advanced proxies
  • Opera: tools preferences advanced network proxy server
  • Chrome: 사용자설정 옵션 고급설정 Tab 프록시 설정 변경 버튼 클릭 후 IE설정과 동일
  • Safari:


Grinder사용방법
startConsole.cmd와 startAgent.cmd를 수행하면 아래와 같이 모든 icon이 활성화 된다.
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image024.jpg  
-    위의 적색표시 중 Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image026.jpg  icon은 통계정보를 모으는 역할을 하며 수행될 작업에 대한 기록을 담당. worker process수행 전 구동한다.
-    위의 적색표시 중 Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image028.jpg icon은 worker process를 구동하는 icon으로 실제 Grinder로 BMT테스트를 시작하도록 한다.
-    위의 적색표시 중 Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image030.jpg icon은 작업을 위한 worker process에 대한 설정 등을 초기화 시키는 역할을 한다.
-    위의 적색표시 중 Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image032.jpg icon은 수행 결과를 저장한다.
-    일반적으로 작업의 순서는 위에 나열된 순서대로 진행된다.
-    작업화면
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image034.jpg  
Grinder실행결과
위의 작업화면을 통하여 Grinder의 실행 결과를 볼 수 있다. 위의 각 Tab항목에 따라 Graphs, Results, Process, Script항목을 확인할 수 있으나 가독성이 좋지 않고 전체적인 결과에 대한 파악이 쉽지 않다. 따라서 해당 결과값을 분석해주는 GrinderAnalyzer를 이용하여 결과를 확인하는 것을 권장한다.


GrinderAnalyzer란?

GUI형태로 Grinder의 결과 값을 분석해 Report를 만들어 주는 툴이다.


GrinderAnalyzer설치방법
- grinderAnalyzer를 다운로드(http://sourceforge.net/projects/track/files/) 받는다. 테스트된 버전은 grinderAnalyzer.V2.b12 이다.
- Jython을 다운로드(http://wiki.python.org/jython/) 받는다. 테스트된 버전은 jython2.2.1 이다.
- Jython을 설치한다.
- 원하는 디렉토리에 GrinderAnalyzer의 압축을 풀고, 설치한 Jython 디렉토리에서 jython.bat파일을 GrinderAnalyzer의 압축을 풀어놓은 디렉토리에 복사한다.
- cmd창에서 자신의 경로에 맞게 실행한다.

GrinderAnalyzer사용방법

- OS별 사용 방법 및 사용 예는 아래와 같다.
  • Windows

Jython.bat analyzer.py "<grinder data File(s)>" <grinder out file> number of agents

  • Linux

Jython ./analyzer.py "<grinder data File(s)>" <grinder out file> number of agents

  • 사용 예

jython.bat analyzer.py "D:\04.Utilities\11.BMT_tools\grinder-3.4\bin\log\data_<hostname>-0.log D:\04.Utilities\11.BMT_tools\grinder-3.4\bin\log\data_<hostname>-1.log D:\04.Utilities\11.BMT_tools\grinder-3.4\bin\log\data_<hostname>-2.log" D:\04.Utilities\11.BMT_tools\grinder-3.4\bin\log\out_<hostname>-2.log 1


  1. Grinder에서 여러 개의 process로 작업을 한 경우 bin\log 폴더에 <hostname>기반의 로그가 생성된다. 생성된 로그들을 분석에 활용하기 위해서는 위의 “”로 묶어 작업을 해야 하며, 각 파일은 스페이스로 구분(Enter로 구분하지 않는다)한다. 파일이 많을 경우 모든 파일을 스페이스로 구분하여 “”로 묶어 주어야 한다.
  2. 선행되는 log파일은 data_로 시작되며 Grinder의 각 process를 통해 작업한 결과 값을 가지고 있다.
  3. “”묶어준 <grinder data files(s)> 후의 파일인 <grinder out file>은 out_로 시작되며 이곳에 적어줄 파일은 모든 파일일 아니라 가장 마지막에 생성된 파일의 경로와 이름(out_<hostname>-2.log)을 적어준다.
  4. 가장 마지막에 적어주는 number of agents는 일반적으로 1로 설정한다. number of agents란 가상으로 원격 접속하는 agent를 설정하는 것으로 하나의 PC에서 여러 개의 process를 생성하여 테스트하는 기존의 방법에서 1이외의 값은 의미가 없다. 1개의 process로 테스트한 후 10명의 agent결과를 추정하려 한다면 number of agents의 값을 조정하여 결과를 유추할 수 있다.

GrinderAnalyzer 결과 값 UI
Grinder와 GrinderAnalyzer를 이용한 BMT와 결과 분석_image036.jpg  
- GrinderAnalyzer를 수행하면 홈 디렉토리에 grinderReport라는 폴더가 생성되며 해당 폴더에 PNG로 된 image파일과 report.html파일이 생성된다.
- report.html파일을 수행하면 위의 그림과 같은 보고서 형태의 파일을 확인할 수 있다.
- 최상단 이미지는 로그 분석 결과의 전체적인 Transactions per second와 Response Time이며, link형태로 되어 있는 각 항목에서 값에 해당 부분에 대한 image(그래프)를 확인할 수 있다.


결과항목 설명
- Test Passed: 테스트 성공횟수
- Tests w/errors: 에러 발생 횟수
- Pass Rate: 테스트 성공률
- Mean Response Time: 해당 항목 평균 response time
- Response Time Standard Dev.: response time 기준 편차(milliseconds)
- Mean Response Length: HTTP response의 크기(bytes) 평균
- Bytes Per Sec.: 각 항목 수행에서 전송받은 초당 bytes 크기
- Mean Time Resolve Host: Domain Name에서 target server/application로의 연결 평균시간(milliseconds)
- Mean Time Establish Connection: TCP connection이 target server/application 연결을 위한 평균시간(milliseconds)
- Mean Time to First Byte: Target server/application으로부터 받는 첫 번째 bytes의 평균시간(milliseconds)


참고사이트
-    The Grinder(http://grinder.sourceforge.net/g3/console.html)
-    Grinder Analyzer(http://track.sourceforge.net/analyzer.html)

엮인글 :
https://www.cubrid.com/71339/e24/trackback
공헌자 :
cubebridge
첨부