BackEnd/Tests

성능 테스트. nGrinder

hanseom 2022. 2. 15. 21:46
반응형

  nGrinder는 Naver에서 만든 스트레스 테스트용 플랫폼입니다. 스크립트 생성, 테스트 실행, 모니터링 및 결과 보고서 생성기를 동시에 실행할 수 있습니다.

 

nGrinder 구성 요소

  • Controller: 테스터가 테스트 스크립트를 생성하고 테스트 실행을 구성할 수 있도록 하는 웹 애플리케이션
  • Agent: 부하를 생성하는 가상 사용자 생성기

 

nGrinder 특징

  • Jython or Groovy 스크립트를 사용하여 테스트 시나리오를 생성하고 여러 에이전트를 사용하여 JVM에서 스트레스를 생성합니다.
  • 사용자 정의 라이브러리(jar, py, maven 종속성)로 테스트를 무제한 확장합니다.
  • 프로젝트 관리, 모니터링, 결과 관리 및 보고서 관리를 위한 웹 기반 인터페이스를 제공합니다.
  • 여러 테스트를 동시에 실행합니다. 사전 설치된 여러 에이전트를 할당하여 각 에이전트의 활용도를 최대화합니다.
  • 스크립트 관리를 위해 Subversion을 포함합니다.
  • 스트레스를 생성하는 에이전트와 스트레스를 받는 대상 머신의 상태를 모니터링할 수 있습니다.
  • 1억 명 이상의 사용자가 있는 거대한 시스템을 테스트하는 데 사용되는 입증된 솔루션입니다.

 

nGrinder 설치

  nGrinder는 웹 애플리케이션(Controller)과 Java 애플리케이션(Agent, Monitor)의 조합입니다. 컨트롤러와 에이전트를 설치하려면 Oracle JDK 1.6+ 또는 OpenJDK 1.7+이 필요합니다. nGrinder는 에이전트 및 에이전트와 통신하기 위해 많은 포트를 사용합니다.

  • Agent: Any > Controller: 16001
  • Agent: Any > Controller: 12000 ~ 12000+ (동시 테스트)
  • Controller: Any > Monitor: 13243
  • Controller > Public user: 8080 (default)

 

nGrinder 다운로드

https://github.com/naver/ngrinder/releases

ngrinder-controller-3.5.5-p1.war click

nGrinder 실행

  nGrinder는 기본적으로 웹 서버 포트 8080을 사용합니다. 다른 포트를 사용하려면 --port port_number를 매개변수로 지정하면 됩니다.

$ java -jar ngrinder-controller-3.5.5-p1.war --port 8082

  오류가 발생할 경우 다음 명령어로 nGrinder를 실행합니다. nGrinder는 SVNKit, maven, Jetty 웹서버, groovy, python과 같은 라이브러리가 매우 많기 때문에 매우 큰 PermGen 메모리가 필요합니다. PermGen 설정으로 nGrinder를 다시 실행합니다.

$ java -XX:MaxPermSize=200m -jar ngrinder-controller-3.5.5-p1.war --port 8082

  터미널에 다음 로그가 표시되면 nGrinder 컨트롤러를 실행할 준비가 된 것입니다.

Started NGrinderControllerStarter in 12.931 seconds (JVM running for 14.323)

  브라우저를 열고 http://localhost:8082/ 접속합니다.

 

Agent 설치

  관리자로 로그인합니다. (admin / admin) 우측 상단 메뉴의 Download Agent를 클릭합니다.

  에이전트가 포함된 tar 아카이브 파일이 다운로드되면 압축해제를 합니다.

$ tar xvf ngrinder-agent-3.5.5-p1-localhost.tar

 

Agent 실행

$ ./run_agent.sh
  • run_agent.sh # for linux / mac
  • run_agent_bg.sh # If you want to run it in the background for linux / mac
  • run_agent.bat # for windows

 

Agent 중지

  • stop_agent.sh # for linux / mac
  • stop_agent.bat # for windows

Controller에 Agent가 등록되었는지 확인합니다.

 

API 테스트

Quick Start에 테스트 할 API URL을 입력하고 [Start Test] 버튼을 클릭합니다.
Test Configuration 후 [Clone and Start] Click

  • Agent: 기본적으로 시스템당 하나의 에이전트만 지원됩니다. 하나의 시스템에서 여러 에이전트를 실행하려면 일부 에이전트 옵션을 구성해야 합니다. 에이전트 구성 안내서 참조하시면 됩니다.
  • Vuser per agent: 에이전트별 가상사용자 수입니다. 애플리케이션 특성에 따라 지정합니다. 예) admin: 100 ~ 500, front serving: 1000 ~ 3000
  • script: Groovy or Jython script, [R4] 클릭하면 스크립트를 확인하고 수정할 수 있습니다.
  • Duration: 테스트를 수행할 시간을 지정합니다. 실제 운영 환경에서는 10분 이상 테스트를 수행합니다.
  • Enable Ramp-Up: 테스트를 수행할 때 점점 부하를 증가시킬지 체크합니다. 우측 콤보박스에서 Process or Thread로 설정이 가능합니다. Thread 설정 후 기본 설정 값을 사용합니다.

Report

  Report를 보면 TPS가 4,016인 것을 확인할 수 있습니다. 이는 초당 약 4,000건의 Traffic을 처리할 수 있다는 의미입니다. 좌측의 Errors 건수가 존재하거나 우측 그래프에서 0으로 떨어지는 케이스가 존재한다면 좌측 하단의 Logs 압축 파일을 확인합니다.

 

[참고정보]

nGrinder

nGrinder Installation Guide

반응형