Infra

[Tool] nGrinder 찍먹 (2) - 테스트 진행기

DuL2 2024. 2. 20. 11:00

오늘은 nGrinder에 대해 간략히 알아보고 mac m1 환경에서 nGrinder를 설치 후 동작을 점검해보려고 합니다. 이 글은 시리즈로 연재됩니다.

 

nGrinder 찍먹 시리즈

  1. [Tool] nGrinder 찍먹 (1) - nGrinder와 설치 이야기
  2. [Tool] nGrinder 찍먹 (2) - 테스트 진행기 - 현재글

 

테스트 화면 설명

이제 우리는 우리 서버를 괴롭힐 테스터들을 만들어 볼 차례이다. :) 방끗

영화 샤이닝

 

 

지난 글에 이어 controller main 화면에서 스크립트 버튼을 눌러보자.

 이 곳이 우리가 괴롭힐 서버와 괴롭힐 방식을 설정할 수 있는 창이다.

 

본격적으로 스크립트를 작성해보자. 다음과 같이 스크립트 만들기를 클릭!

원하는 테스트 스크립트 이름과 대상 서버 api를 입력해주자! 단, 아래처럼 localhost로 입력하면 오류가 나니 주의하자.

 

 

로컬호스트로 주소입력시 오류

 

 

 

 

성능 테스트 시작!

 

성능 테스트 버튼을 누르면 다음과 같은 화면이 뜨게 된다. 

 

 

 

테스트 생성을 누르면 다음과 같은 화면이 나오는데 사진의 설정값들을 정리해보면 다음과 같다.

 

 

테스트 정보 설정

  • 테스트명: 말그대로 테스트 명을 의미한다.
  • 설명: 테스트에 대한 설명

테스트 설정

  • 에이전트(Agent)
    • 성능 측정에 사용할 Agent 개수를 의미. 본인은 1~10까지 docker image를 올렸으니 최대 10명까지 사용 가능하다. 만약 1개로 충분하다면 image를 한개만 올려도 됨!
  • 에이전트 별 가상사용자(Vuser per agent)
    • Agent 당 설정할 가상 사용자 수를 의미한다. 즉, 동시에 요청을 날리는 사용자 수를 의미.
  • Process / Thread: 하나의 Agent에서 생성할 프로세스 개수와 스레드 개수
  • Script
    • 성능 측정 시에 사용할 스크립트 코드를 의미
    • Script를 연결(.groovy or .jython)하거나 Github에서 가져올 수 있다고 함
  • Duration (HH:MM:SS): 성능 측정 수행 시간
  • Run Count: 스레드당 테스트 코드를 수행하는 횟수
  • Enable Ramp-Up: 성능 측정 과정에서 가상 사용자를 점진적으로 늘리도록 활성화(내구성 테스트 등에서 점차 사용하는 유저가 많아지는 시나리오를 테스트할 때 사용한다.)
  • Initial Count: 처음 시작시 가상 사용자 수
  • Initial Sleep Time: 테스트 시작 시간
  • Incremental Step: Process 또는 Thread를 증가시키는 개수
  • Interval Process 또는 Thread를 증가시키는 시간 간격

테스트 상황

본인은 agent 10개에 Controller 1개를 두어 docker로 테스트 환경을 구성했었다.

 

하지만 실제 테스트 진행은 Local에서 진행하였는데 생각보다 Docker Image를 올려 테스트를 진행하는 것이 컨테이너 성능이 좋지 않아서인지 너무 느렸다. 컨테이너가 제대로 동작하는데 피드백 받는 시간이 오래걸리다보니 시간 내 빠른 테스트를 하는 것이 불가능하다 생각했고, Local로 설치하여 진행하였다. 로컬 설치 방법은 이 글을 통해 진행하였다. java 최신 버전은 지원안하고, ip를 따로 설정해줘야 하는 등의 문제가 생기는 부분도 있어서 신경써주면된다.

https://velog.io/@may_yun/Ngrinder-MAC-M1-%EC%84%A4%EC%B9%98

 

[Ngrinder] MAC M1 설치

Ngrinder: https://github.com/naver/ngrinder/releases현재 기준 3.5.8 최신위 링크에 들어가서 war 파일을 다운 받는다터미널에서 war 파일 실행다운받은 war 위치에서 실행해야한다📌 발생한 에러: nGrinder

velog.io

 

테스트 진행

테스트는 간단하게 캐시 전의 api와 캐시 후의 api를 한번씩 테스트 해보았다.

좌 - 캐시 없는 검색 api, 우 - 캐시가 존재하는 검색 api
좌 - 캐시 없는 검색 api, 우 - 캐시가 존재하는 검색 api

 

결과는 만족스러웠다. TPS가 100정도 개선이 되었고, 전체적인 수치도 좋아졌다.

 

다만 아직 nGrinder가 동작하는 원리나 평균 테스트 시간 등과 같은 이 시간이 단 건, 하나의 request당 response까지의 시간인지 의아한 등의 문제가 남아있었고, 이는 ngrinder가 동작하는 원리를 공부하여 해결해야 할 것 같다.