top bar

글 목록

2016년 2월 2일 화요일

[Performance] The Grinder 3 (2) - 기본 원리 및 실행 환경 설정

기본 원리



그라인더는 크게 3가지 Process로 나뉜다





  • Worker Processes :
    Jython 으로 작성된 테스트 스크립트를 Interpret하고 테스트를 수행한다
    다수의 Worker 스레드가 병렬적으로 동시에 테스트를 수행하게 된다
  • Agent Process :
    Worker 스레드의 실행/중지를 수행한다
    Console로부터 전달 받은 테스트 스크립트를 캐싱한다
  • The Console :
    위 2가지의 프로세스들을 제어 한다
    스크립트 작성과 배포를 담당한다
    테스트 수행시, 그래프 및 현황을 보여준다


실행 환경 설정 (윈도우 기반)



1) setGrinderEnv.cmd

set GRINDERPATH=D:\grinder\grinder-3.11
set GRINDERPROPERTIES=D:\grinder\grinder-3.11\conf\grinder.properties
set CLASSPATH=%GRINDERPATH%\lib\grinder.jar
set JAVA_HOME=C:\dev_tools\Java\jdk1.7.0_65
PATH=%JAVA_HOME%\bin;%PATH%
그라인더 home 경로와 properties 파일경로, jdk 경로 등을 정의하는 스크립트이다.

2) startConsole.cmd

call D:\grinder\grinder-3.11\bin\setGrinderEnv.cmd
java -Dgrinder.console.consolePort=6372 -Dgrinder.console.consoleHost=localhost -Xms1024m -Xmx1024m -cp %CLASSPATH% net.grinder.Console 
Console을 구동하는 스크립트이다. call명령어를 이용해 setGrinderEnv에서 정의한 변수들을 활용한다. Agent와의 통신을 위해 console port와 host를 자바 옵션으로 준다. (아마 옵션으로 주지 않아도 default 설정으로 되어 있을 것이다)

3) startAgent.cmd

set GRINDERPATH=D:\grinder\grinder-3.11\bin
call D:\grinder\grinder-3.11\bin\setGrinderEnv.cmd
echo %CLASSPATH%
java -cp %CLASSPATH% net.grinder.Grinder -daemon 5 %GRINDERPROPERTIES%
Agent를 구동하는 스크립트이다. 구동시에 '-daemon 5' 라는 옵션을 주는데, Console으로부터 응답이 없다면(Console이 죽었다면) 5초 간격으로 재접속을 시도하라는 의미이다.

4) 디렉토리 추가 및 설정


위 3가지 스크립트를 생성하면, grinder 설치 폴더에 'bin' 폴더를 생성한뒤 3개 스크립트를 그쪽으로 몰아 넣는다. Agent 설정파일인 'grinder.properties' 는 최초 'examples' 폴더에 존재하는데, 이 파일 또한 grinder 설치 폴더에 'conf' 폴더를 만들어서 그쪽에 넣도록 하자.

그러면 아래와 같은 구조가 될 것이다.


grinder.properties



Agent의 설정은 grinder.properties 파일에 작성된다. 해당 properties 파일의 경로는 setGrinderEnv.cmd 스크립트에서 변수로 정의되고, startAgent.cmd 스크립트에서 그 경로를 사용한다.

grinder.properties 의 주요 설정은 아래와 같다
#
# Commonly used properties
#
# The file name of the script to run.
#
# Relative paths are evaluated from the directory containing the
# properties file. The default is "grinder.py".
grinder.script = d:/grinder/python_source/grinder/stress_test.py
 
# The number of worker processes each agent should start. The default
# is 1.
grinder.processes = 1
# The number of worker threads each worker process should start. The
# default is 1.
grinder.threads = 50
# The number of runs each worker process will perform. When using the
# console this is usually set to 0, meaning "run until the console
# sneds a stop or reset signal". The default is 1.
grinder.runs = 1000
# The IP address or host name that the agent and worker processes use
# to contact the console. The default is all the network interfaces
# of the local machine.
; grinder.consoleHost = consolehost
# The IP port that the agent and worker processes use to contact the
# console. Defaults to 6372.
; grinder.consolePort
grinder.script : 테스트 스크립트의 경로를 입력
grinder.processes : worker 프로세스의 갯수
grinder.threads : 하나의 worker 프로세스 안에서 실행되는 스레드 갯수
grinder.runs : 테스트 수행 횟수
grinder.consoleHost : 콘솔과의 TCP 통신을 위한 host
grinder.consolePort : 콘솔과의 TCP 통신을 위한 port


실행



1) Console 구동


먼저 윈도우 cmd 창에서 'startConsole.cmd'를 실행한다.



조금 기다리면 grinder 콘솔 창이 노출된다.



빨간색 박스 부분이 Agent를 제어하는 부분인데, 비활성화 되어있다.
아직 Agent를 구동하지 않았기 때문이다.

2) Agent 구동


startAgent.cmd 를 실행하여 Agent를 구동해 보자.



위 처럼 startAgent.cmd 를 실행하면 콘솔의 host:port 로 connect를 성공했다는 로그가 찍힌다. 그리고 다시 Console 창을 보자.



방금전 비활성화 되어있던 Agent 제어 버튼이 활성화 되었다.

첫번째 버튼은 Agent가 테스트를 시작/중지 할 수 있게 명령을 내리는 버튼이고,
두번째 버튼은 Agent를 reset 하는 버튼인데, 이때 Agent는 grinder.properties 의 속성들을 다시 읽어 들인다. 따라서 grinder.properties의 값을 바꿨을때 Agent를 굳이 재시작 하지 않아도 reset 버튼으로 변경된 grinder.properties의 값을 적용 시킬 수 있다.

3) script root directory 설정




빨간색 박스안에 있는 버튼을 이용해 배포될 테스트 스크립트의 저장 경로를 설정 할 수 있다. 해당 경로 밑의 모든 파일들이 worker 프로세스에 배포되므로, 리눅스 환경에서의 '/home' 이나 윈도우 환경에서의 'C:\' 와 같은 최상단 디렉토리를 설정하면 절대 안된다.

보통 grinder 설치 폴더의 'examples' 폴더로 설정하는 것이 일반적이다.


이제 기본적으로 테스트를 수행하기 위한 모든 설정은 끝이 났다.

다음 포스팅에서는 기본적인 http 테스트를 위한 Jython 스크립트 작성과,
테스트 수행, 그리고 'GrinderAnalyzer' 를 이용한 결과 리포트 산출 등을 정리하겠다.


댓글 없음:

댓글 쓰기