logo_ngrinder

nGrinder란?

nGrinder는 네이버에서 성능 측정 목적으로 개발 된 오픈소스 프로젝트이며, 2011년에 공개 하였습니다.

(The Grinder라는 오픈소스 기반에서 개발 되었습니다.)

성능 측정이란 것은 실제 서비스에 투입 되기 앞서, 실제와 같은 환경을 만들어 놓고, 서버가 사용자를 얼마 만큼 받아 줄 수 있느냐를 실험 할때 사용합니다.

예를들어.. 엔지니어가 동시접속자 100명 정도 쯤 무리 없겠지? 라고 예상하고 그에 맞는 서버를 준비하고 설정 했는데.. 예상치 못한 x1000 명이 더 와버리면.. 서버는 죽고 엔지니어는 야근 하겠죠..? 이런것을 미리 예측 하기 위한 도구라고 이해 하시면 됩니다. ^^;

또한, 엔터프라이즈 환경에서의 상용 성능 측정 도구를 사용 해보질 않아서 잘 모르지만, 대충 들어보니 가격이 억대라고 합니다.
그래서, 네이버가 가격 때문에도 그렇고 테스트 및 개발시 잦은 수고들을 덜게 하기 위해 만들어 진 것 같습니다.

무튼 설명은 여기서 끝내기로 하고 더 자세한 내용은 https://naver.github.io/ngrinder 또는
개발자이신 윤준호님 블로그 http://junoyoon.tistory.com/category/ngrinder 를 방문 해주세요.

 

nGrinder Architecture

아키텍처를 살펴보시면 아시겠지만, nGrinder는 Controller, Agent, Target 서버로 나눠져 있습니다.

– Controller
성능 테스트를 위한 웹 인터페이스, 테스트 프로세스를 조정 및 대조, 표시 통계 테스트를 할 수 있는 기능을 제공합니다.

– Agent
Controller의 명령을 받아 실행에 옮기는 녀석입니다.

– Target
실험 대상이 될 서버이며, 여기에 nGrinder-Monitor가 실행이 되면 실험하는 동안 현 상황 정보를 Controller에서 모니터링 할 수 있습니다.

nGrinder-Architecture

Figure 1. nGrinder System Architecture
(http://www.cubrid.org/wiki_ngrinder/entry/general-architecture)

 

nGrinder 설치

위의 아키텍처와 동일하게 구성하고 Target 서버에 모의 실험을 진행 해보도록 하겠습니다.
본 글은 Ubuntu 14.04 LTS에서 nGrinder v3.3을 사용하여 테스트 하였고 설정 파일 및 서버 부분의 세부 사항은 다루지 않으며, 상위 버전 또는 하위 버전은 설치법이 다소 상이 할 수 있습니다.

0. 공통 부분
Controller, Agent, Target 서버 모두 Hostname 설정 및 JDK 설치가 되어 있어야 하므로, 모든 서버에 적용 해주시길 바랍니다.

– Hostname 설정

    Hostname                IP
ngrinder-controller	172.17.0.93
ngrinder-agent-1	172.17.0.94
ngrinder-agent-2	172.17.0.95
ngrinder-agent-3	172.17.0.96
ngrinder-agent-4	172.17.0.97
ngrinder-target		172.17.0.98
root@ruo91:~# echo "ngrinder-controller	172.17.0.93" >> /etc/hosts
root@ruo91:~# echo "ngrinder-agent-1	172.17.0.94" >> /etc/hosts
root@ruo91:~# echo "ngrinder-agent-2	172.17.0.95" >> /etc/hosts
root@ruo91:~# echo "ngrinder-agent-3	172.17.0.96" >> /etc/hosts
root@ruo91:~# echo "ngrinder-agent-4	172.17.0.97" >> /etc/hosts
root@ruo91:~# echo "ngrinder-target	172.17.0.98" >> /etc/hosts

 

 

– JDK 설치

root@ruo91:~# cd /opt
root@ruo91:~# curl -LO "http://download.oracle.com/otn-pub/java/jdk/7u75-b13/jdk-7u75-linux-x64.tar.gz" \
-H 'Cookie: oraclelicense=accept-securebackup-cookie'
root@ruo91:~# tar xzf jdk*tar.gz
root@ruo91:~# mv jdk1* /usr/local/jdk1.7
root@ruo91:~# rm -f jdk*.tar.gz

 

 

– JDK PATH 설정

root@ruo91:~# echo '# JDK' >> /etc/profile
root@ruo91:~# echo "export JAVA_HOME=$JAVA_HOME" >> /etc/profile
root@ruo91:~# echo 'export PATH="$PATH:$JAVA_HOME/bin"' >> /etc/profile
root@ruo91:~# source /etc/profile

 

 

1. Controller
nGrinder Controller는 Jenkins와 같이 WAR 형태로 배포 되기 때문에 명령어 한줄로 바로 실행 할 수 있으며,
SourceForge에서 해당 파일을 받을 수 있으므로 curl로 적절하게 받아 설치 합니다.

http://sourceforge.net/projects/ngrinder/

– Controller 설치

root@ngrinder-controller:~# mkdir /opt/nGrinder
root@ngrinder-controller:~# curl -L -o /opt/nGrinder/ngrinder-controller-3.3.war "http://downloads.sourceforge.net/project/ngrinder/ngrinder-3.3/ngrinder-controller-3.3.war?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fngrinder%2Ffiles%2Fngrinder-3.3%2F&ts=1422129105&use_mirror=cznic"

 

 

– Controller 실행
Controller는 16001 포트를 통해 Agent를 관리 하기 때문에 방화벽을 사용한다면 이 포트 번호를 허용 해주셔야 합니다.

root@ngrinder-controller:~# java -XX:MaxPermSize=200m -jar /opt/nGrinder/ngrinder-controller-3.3.war --port 80

 

 

2. Agent
Agent는 Controller에서 다운로드가 가능하므로 Controller의 WEB UI로 접속하여 다운로드 하면 됩니다.

ex) http://ngrinder-controller/

– Agent 설치

root@ngrinder-agent:~# cd /opt
root@ngrinder-agent:~# curl -L -o ngrinder-agent.tar http://ngrinder-controller/agent/download/
root@ngrinder-agent:~# tar xvf ngrinder-agent.tar
root@ngrinder-agent:~# rm -f ngrinder-agent.tar

 

 

– Agent PATH 설정

root@ngrinder-agent:~# echo "# nGrinder Agent" >> /etc/profile
root@ngrinder-agent:~# echo "export NGRINDER_AGENT=/opt/ngrinder-agent" >> /etc/profile
root@ngrinder-agent:~# echo "export PATH=$PATH:$NGRINDER_AGENT" >> /etc/profile
root@ngrinder-agent:~# source /etc/profile

 

 

– Agent 실행
각각의 Agent 서버에 해당 스크립트 실행

root@ngrinder-agent:~# run_agent.sh

 

 

3. Target
– Monitor 설치
Controller 서버에서 Target 서버의 상황 정보 모니터링 하기 위한 Monitor 설치

root@ngrinder-target:~# cd /opt
root@ngrinder-target:~# curl -L -o ngrinder-monitor.tar http://ngrinder-controller/monitor/download/
root@ngrinder-target:~# tar xvf ngrinder-monitor.tar
root@ngrinder-target:~# rm -f ngrinder-monitor.tar

 

– Monitor PATH 설정

root@ngrinder-target:~# echo "# nGrinder Monitor" >> /etc/profile
root@ngrinder-target:~# echo "export NGRINDER_MONITOR=/opt/ngrinder-monitor" >> /etc/profile
root@ngrinder-target:~# echo "export PATH=$PATH:$NGRINDER_MONITOR" >> /etc/profile
root@ngrinder-target:~# source /etc/profile

 

– Monitor 실행

root@ngrinder-target:~# run_monitor.sh

 

– Target 서버용 웹서버(Nginx) 설치
웹서버의 TPS를 확인 하기 위해 설치 합니다.

root@ngrinder-target:~# apt-get install -y python-software-properties software-properties-common
root@ngrinder-target:~# echo "deb http://nginx.org/packages/ubuntu/ `lsb_release -sc` nginx" > /etc/apt/sources.list.d/nginx.list
root@ngrinder-target:~# wget -q -O- "http://nginx.org/keys/nginx_signing.key" | apt-key add -
root@ngrinder-target:~# apt-get update && apt-get install -y nginx
root@ngrinder-target:~# service nginx start

 

nGrinder 성능 측정

WEB UI에 로그인 합니다. 기본 ID/PW는 admin/admin 입니다.

ex) http://ngrinder-controller/

nGrinder-0

Figure 2. nGrinder Login

 

로그인을 하고나면 보이는 첫 화면입니다.

nGrinder-1

Figure 3. nGrinder Home

 

우측 admin 을 눌러 Agent Management를 눌러 Agent들이 잘 등록 되어 있는지 확인 합니다.

nGrinder-2

Figure 4. nGrinder Admin Menu

 

nGrinder-3

Figure 5. nGrinder Agent Management

 

확인이 되었다면 ngrinder-target 서버를 테스트를 해보겠습니다.
Quick Start 부분에 테스트 할 서버의 IP 주소 또는 도메인을 적어 주세요.

nGrinder-4

Figure 6. nGrinder Quick Start

 

Basic Configuration 부분에서 적절하게 Agent 사용 수와 가상 사용자 수를 지정 후 우측에 있는 Save and Start 버튼을 누릅니다.

nGrinder-5

Figure 7. nGrinder Quick Start : Test Configuration

 

누르면 스케줄 설정 창이 뜨는데 Run Now를 눌러 바로 테스트를 진행 합니다.

nGrinder-6

Figure 8. nGrinder Quick Start : Test Configuration : Schedule Setting

 

실제와 같은 환경에서 테스트가 진행 되며 MTT, TPS, MTFB, Resp/s 과 같은 값들을 확인 하실 수가 있습니다.

nGrinder-7

Figure 9. nGrinder Quick Start : Test Running

 

테스트가 완료 되면 아래와 같이 전체 가상 사용자, TPS, Peak TPS 내역을 간단하게 확인 할 수 있습니다.

또한, 아래 Logs 파일을 다운로드 하여 상세하게 확인 해볼 수 있습니다.

nGrinder-8

Figure 10. nGrinder Quick Start : Report

 

위의 그림에서 우측의 Detailed Report 버튼을 누르면 좀 더 자세한 보고서를 확인 할 수 있습니다.

nGrinder-9

Figure 11. nGrinder Quick Start : Detailed Report

 

참고

http://naver.github.io/ngrinder/

http://deview.kr/2013/detail.nhn?topicSeq=2

http://junoyoon.tistory.com/category/ngrinder

https://prezi.com/crownidrjkgp/ngrinder-jco-20120218/