ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring 성능 테스트 With Ngrinder (1) - Ngrinder 설치
    DataBase/튜닝 2024. 8. 22. 15:17

     

    엔그라인더는 크게 두 가지 구성요소로 되어있다.

     

    1.  Controller

     

    - 성능 테스트를 위한 웹 인터페이스 제공

    - 테스트 프로세스 조정

    - 테스트 통계를 대조하여 표시

    - 스크립트 만들고 수정

     

    2. Agent

     

    - 에이전트 모드로 실행할 때 대상 시스템에 로드를 가하는 프로세스 및 스레드 실행 

    - 모니터 모드로 실행할 때 대상 시스템 성능 모니터링 

     

    이제 컨트롤러와 에이전트를 다운받아야 한다.

     


    2. nGrinder 설치 및 세팅

     

    nGrinder의 Controller와 agent를 설치하기 위해선 JDK가 필요하다.

     

    nGrinder는 통신을 위해 여러 포트를 사용하므로, 해당 포트가 방화벽에 걸리지 않는지 확인이 필요하다.

     

    Agent : any -> controller 16001

    Agent: any - > Controller 12000 ~ 12000+ (동시테스트 허용수만큼)

    Controller : Any -> Monitor : 13243 

    Controller : public user : 톰캣 설정에 따르지만 기본은 8080이다.

     

    2.1 nGrinder 공식 위키 설치 가이드 

     

    - ngrinder-controller-최신버전.war를 다운 받은 후 실행 (포트는 안겹치게 7071로 실행했다)

     

     

     

     

    2.2 nGrinder 접속하기 localhost:포트번호/login으로 접속해보자  

     

    admin/admin으로 로그인하자 

     

    다음으로 메뉴창에서 에이전트를 다운한다.

     

    다운받은 .tar파일을 압축을 푼다

     

     

    윈도우는 .bat파일을 나머지 OS는 .sh파일을 실행하면 된다.

     

     

    Agent menegement탭에 들어가면 잘 실행되는 모습을 확인할 수 있다. 

     

     

    2.3 스크립트 생성 

     

    상단의 스크립트 탭에 들어가면 스크립트를 생성할 수 있다. 

     

     

    문법을 설정하고, 요청보낼 URL을 설정하자 

     

    https://www.groovy-lang.org/syntax.html

     

    The Apache Groovy programming language - Syntax

    Groovy uses a comma-separated list of values, surrounded by square brackets, to denote lists. Groovy lists are plain JDK java.util.List, as Groovy doesn’t define its own collection classes. The concrete list implementation used when defining list literal

    www.groovy-lang.org

    위 공식문서를 들어가면 다양한 문법을 확인할 수 있다. 

     

    2.4 Validate버튼을 눌러 정상인지 체크해본다.

     

    이때 Unsupported class file major version 61 에러가 난다면, JDK버전을 낮춰야한다. (11로!)

     

    2.5 상단에 성능 테스트 -> 테스트 생성을 누르면 아래와 같은 화면이 나온다.


     

    3. nGrinder 용어 정리 

     

    에이전트 

     

    - 성능 측정에 사용할 Agent 

    - 일반적으로 로컬에서 테스트 실행할 경우 디폴트는 1이다. (여러개는 Docker나 Cloud service 이용)

     

    에이전트 별 가상 사용자

     

    - 프로세스 수 * 쓰레드 수  = 각 Agent당 가상 사용자 수 

    - 동시에 요청을 날리는 사용자를 의미한다. 

     

    프로세스 및 쓰레드 

     

    - 한 Agent에서 생성할 프로세스와 그에 따른 쓰레드 개수 

     

    스크립트 

     

    - 성능 측정 시 각 Agent에서 실행할 스크립트

     

    테스트 기간

     

    - 성능 측정 수행 시간 

    - 시간이 넉넉해야 평균치가 잘 나온다.

     

    Ramp-up 사용 체크박스 

     

    - 성능 측정 과정에서 가상 사용자를 점진적으로 늘리도록 활성화

    - 점진적 부하테스트 시 사용

     

    초기 개수 

     

    - 처음 시작 시 가상 사용자 수 

     

    초기 대기 시간 

     

    - 테스트 시작 시간

     

    증가 단위

     

    - 프로세스 또는 쓰레드를 증가시키는 개수 

     

    Ramp-up 주기

     

    - 프로세스 또는 쓰레드를 증가시키는 시간 간격

     

    * 지금 시작 혹은 예약 시작이 가능하다

    * 실행 중에 로그를 보고 싶으면 에이전트 터미널을 보면 된다.

     

    TPS (처리량)

     

    - 초당 처리가능한 트랜잭션의 수를 뜻한다.

    - TPS가 100이라면 초당 처리할 수 있는 작업이 100이라고 생각하자 -> TPS가 높을 수록 짧은 시간에 많은 작업 수행 

     

    Vuser

     

    - 가상의 유저 -> vUser10은 가상 유저가 10명임을 나타낸다. 부하테스트 시나리오에서 10명의 가상 사용자가 동시에 시스템 또는 애플리케이션에서 동작하고 있음을 의미한다.

     

    출처: 백엔드 개발자 성능 개선 초석 다지기

     

    TPS: 평균 TPS

    Peek TPS : 최고 TPS

    Mean Test Time : 평균 테스트 시간

    Executed Tests: 테스트 실행 횟수 

    Successful Tests : 테스트 성공 횟수 

    Errors : 에러 횟수 

    Run Time : 테스트 실행 시간 

     

    *TPS는 높고 Mean Test Time은 낮을 수록 성능에 긍정적이다. 


     

    4. 예시

     

    *localhost테스트시 반드시 127.0.0.1로 지정해줘야한다. 

     

     

     

     

    샘플 스크립트가 작성된 것을 확인할 수 있고, 이를 validate로 검증한다 (이때 서버가 켜져있어야 한다.)

     

    검증에 성공했다면, 스크립트를 저장하자 

     

    다음으로 Performance Test 탭으로 이동해서 create Test를 누르자 

     

     

    테스트를 셋팅할 수 있다. 

    'DataBase > 튜닝' 카테고리의 다른 글

    불친절 SQL 2장 정리 (인덱스 기본)  (0) 2024.08.19
    불친절 SQL 1장 정리  (1) 2024.08.19
    조인 튜닝 - 서브쿼리 조인  (0) 2024.08.08
    조인 튜닝 - 소트 머지 조인  (0) 2024.08.07
    조인 튜닝 - NL 조인  (0) 2024.08.07
Designed by Tistory.