nGrinder 시작하기

ssongkim·2022년 10월 11일
0

Overview

오늘은 nGrinder를 이용해 부하테스트를 해보겠습니다.

성능 테스트란?

실사용 환경과 비슷한 환경에서 테스트를 진행하는 것을 성능테스트라고 합니다.

성능 테스트의 목적

성능테스트는 주로 시스템 개발 종료시점에 수행하며 서비스나 서비스 시스템의 문제점을 개선하는데 주로 목적을 가집니다.

성능테스트 용어

  • 트랜잭션: 주로 요청과 그에 대한 응답을 하나의 트랜잭션으로 정의
  • TPS: 1초에 처리할 수 있는 트랜잭션의 수
  • 응답 시간: 사용자가 요청을 보낸 시점부터 처리 결과가 화면에 보여질 때까지의 시간

부하 테스트란?

순간적으로 최대치의 트래픽 부하를 줘보는 것을 부하테스트라고 합니다.

부하테스트의 목적

  • 리소스 병목 탐색, 버그 탐색
  • 이벤트 상황과 같은 순간 트래픽 최대치, 한계치를 탐색
  • 신규 스펙 장비에서 MySQL 설정 최적화 탐색

스트레스 테스트란?

스트레스 테스트는 부하테스트와 비슷하나 장기적으로 부하를 줘보는 것입니다.

스트레스 테스트의 목적

  • 장기간 부하 발생에 대한 한계치를 탐색, 예외 동작 상황 확인
  • 데이터베이스 failover 상황, 자동 복구, 예외 동작 상황 확인

어느 정도의 부하를 견디는 지, 한계치에서 병목이 생기는 지점이 어디인지, 메모리 누수가 발생하는 지, 최악의 상황에서 어떤 동작을 하는 지 등 확인 가능!

nGrinder

네이버에서 성능 측정 목적으로 grinder 기반으로 개발한 오픈소스 프로젝트

  • jython과 groovy 두 타입으로 스크립트 작성 가능
  • Groovy는 jUnit 기반으로 되어있어 자바 개발자에게 너무 좋은 스크립트 언어!

nGrinder의 구성요소

Controller

부하테스트를 위해 웹 인터페이스를 제공한다.

Agent

  • Controller의 명령을 받아 실행한다.
  • target이 된 머신에 프로세스와 스레드를 실행해 부하를 발생시킨다.

Target

부하를 받는 대상 머신

nGinder 실습해보기

1. docker compose 작성

version: '3.5'
services:
  controller:
    container_name: nGrinder-controller
    image: ngrinder/controller
    restart: always
    ports: 
      - "30000:80"   # Default controller web UI port.
      - "16001:16001" 
      - "12000-12009:12000-12009" # controllers allocate stress tests through these ports.
    volumes:
      - ./ngrinder-controller-date:/opt/ngrinder-controller
  agent:
    container_name: nGrinder-agent
    image: ngrinder/agent
    restart: always
    links:    
      - controller

2. nGrinder UI 접속

설정한 포트를 통해 접속

기본 아이디와 비밀번호는 admin / admin 입니다.


부하를 발생할 에이전트를 에이전트탭에서 설정 가능합니다. 에이전트는 별도로 컨테이너를 띄워서 등록해야 합니다. 이번 실습에는 하나의 에이전트만 사용할 예정입니다.

3. script 작성

script -> create를 눌러 Groovy 타입으로 스크립트를 작성합니다.

4. Test 생성

performance test -> create test로 테스트를 생성합니다.
script 영역에서 앞서 생성한 스크립트를 지정합니다.

앞서 등록한 Agent 개수를 지정하고 각 에이전트에서 프로세스와 스레드를 생성하여 가상의 사용자를 지정합니다.

Duration은 얼마나 부하를 지속할건지 시간을 지정합니다.

5분간 9명의 가상 유저가 스크립트의 내용에 따라 부하를 주도록 하였습니다.

부하 점진적으로 주기

오른쪽에 Enable Ramp-Up을 눌러 부하를 점진적으로 쌔게 줄 수도 있습니다.

5. Save And Start

오른쪽 위에 스타트 버튼을 눌러 성능테스트를 시작합니다.

제가 테스트하고자 하는 조회 API는 500TPS가 나왔군요! 아주 좋습니다.

Detailed Report를 눌러 상세하게 하거나 로그를 다운받아 확인이 가능합니다.

보면 좋은 것

https://bcho.tistory.com/m/787?category=75945

profile
鈍筆勝聰✍️

0개의 댓글