티스토리 뷰

nGrinder 사용후기

 

nGrinder 사용하게 된 이유 ?

회사를 이직한지 어느덧 3주가 되었습니다.

첫 번째 임무(?)로 nGrinder 스크립트 작업이 들어왔습니다. 

( 으응 ? 나는 php 개발자인데 ㅎㅎ groovy 라뇻!? )

 

뭐죠 ?

이름만 들어서는 생소한데.. 사실 ngrinder 는 우리가 흔히 사용하는 부하테스트용 툴이다.

보통 아파치에 기본 포함되어있는 툴로 서버의 스트레스를 주어서 얼마나 많은 트래픽을 견디는지 산출할 때 쓰입니다.

ngrinder의 경우는 단순히 경로 하나를 스트레스를 주는 것이 아니라 ngrinder 가 지원하는 언어 ( 그루비, 자이썬 ) 으로 

시나리오를 작성하여 부하를 줄수 있는 장점이 있다.

 

결정적으로 ngrinder 는 grinder 의 사용하기 힘든 부분을 보완해서 만든 국산품(?)이다 . - 한글 질문 가능 얏호!

경로 : naver.github.io/ngrinder/

 

nGrinder

Please post questions in Discussions not Issues. nGrinder 3.5.3 version is now available. Check the changes at here. nGrinder is a platform for stress tests that enables you to execute script creation, test execution, monitoring, and result report generato

naver.github.io

로컬 테스트용 설치

nGrinder는 명령을 내리는 Controller와 실제 부하를 일으키는 일개미(?) Agent가 존재한다. 테스트용은 같은 컴터에 설치해도 되지만, 실제로 부하테스트 할때는 각기 다른 서버에 설치해서 테스트하도록 하자.

 

docker image pull

$ docker pull ngrinder/controller:latest
$ docker pull ngrinder/agent:latest

 

docker-compose.yaml

version: "2"

services: 
  controller:
    image: ngrinder/controller
    container_name: ngrinder-controller
    volumes: 
      - ./ngrinder-controller:/opt/ngrinder-controller
    container_name: controller
    ports: 
      - 8080:80


  agent:
    image: ngrinder/agent
    container_name: ngrinder-agent
    links: 
      - controller

 

실행 

$ docker-compose up

 

 

작성방법

필자는 Groovy를 택하였다. 파이썬의 능숙도가 높지 않지만, 자바 경험이 있어 택하게 되었다.  ( 사실 차이점은 잘모르겠다 ㅎㅎ;; )

스크립트 작성을 하는 에디터를 열어보면, 6가지 항목이 존재하며 6개의 어노테이션이 있다 @로 시작합니다)

 

구분 설명

@BeforeProcess

프로세스가 생성될때 실행해야 하는 동작 정의

- 프로세스 내 공유할 리소스 파일로드 및 정의

@AfterProcess

프로세스가 종료하기 직전에 실행해야 하는 동작 정의

- 리소스 닫기

@BeforeThread

각 쓰레드가 실행된 전에 실행해야 하는 동작 정의
- 쓰레드별 쿠키 핸들 ( 로그인 )

@AfterThread

각 쓰레드가 종료하기 직전에 실행해야 하는 동작 정의
- BeforeThread 반대 ( 로그아웃 )

@Before

모든 @Test 메소드가 실행되기 전에 실행해야 하는 동작 정의
- @Test 별 공유

@After

모든 @Test 메소드가 종료된 이후 실행해야 하는 동작 정의
- @Test 종류 후 사용 ( 소요시간 확인 )

@Test

테스트 동작 정의

 

삽질 후기 및 팁

 제공하는 에디터로 작성하면 드릅게 힘들다. ( IDE의 노예 ) 그래서 기본제공하는 SVN 을 이용하여 쓰고 있는 IDE 에서 작성하면 편하다.

필자의 경우 인텔리J 로 SVN pull 받아서, junit 으로 로컬 테스트하고 commit 을 사용했다. 

최신 버전의 경우 github 도 제공하는 것 같으나, 사용해보진 않았다.

( 모두 다 테스트 한후에 최신버전으로 업글해서 알게됨 ㅠ..ㅠ )

 

위에 설명한 로컬테스트는 도커로 했지만, 실제 테스트는 도커로하면 안된다. 자기 자신이 controller와 agent를 모두 다하면 못 견디는 것 같다. 그래서 자신의 컴터에 도커로 돌릴때에는 vUser ( 가상 유저) 를 많이 잡지 않고 테스트해야한다.

 

 

댓글


최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday