[ Spring ] nGrinder를 활용한 부하 테스트 - 1 ( 초기 설정 및 계획 )

5tr1ker·2024년 2월 25일
0

nGrinder

목록 보기
1/2

부하 테스트 순서

네이버에서 만든 nGrinder를 사용하여 부하 테스트를 진행해보고자 합니다. 모니터링을 하려면 추가적으로 pinpoint 같은 APM 을 이용해야 하지만 이번엔 nGrinder만 사용하여 부하 테스트를 진행해보고자 합니다.

부하 테스트는 다음과 같은 순서로 진행됩니다.

  • 계획
  • 시나리오 수립
  • 실제 테스트
  • 분석
  • 적용

구현

0. 설치

설치 링크

우선 위의 링크는 nGrinder 공식 저장소 릴리즈 페이지로 링크를 눌러 ngrinder-controller-{version}.war 파일을 다운로드 합니다.

다운로드를 완료했다면, war 파일을 터미널로 실행시켜주며, 포트 번호는 나중에 사용되니 꼭 기억해주세요.

java -jar ngrinder-controller-{version}.war --port=8300

터미널에서 실행이 되었다면 브라우저의 http://localhost:8300 으로 접속해주세요.

초기 ID : admin , PW : admin 입니다.

다음은 다음과 같이 에이전트 다운로드를 활용하여 다운로드 합니다.

다운로드가 완료되었다면, 압출을 풀고 다음 파일을 실행합니다.

run_agent.sh

다음과 같은 화면이 나오면 준비 작업은 끝났으므로 이제 테스트 코드 스크립트를 작성해주시면 됩니다.

1. 계획

우선 부하 테스트 ( stress test ) 는 서버가 얼마만큼의 요청을 견딜 수 있는지 테스트하는 방법입니다.

작성한 API 에 병목 현상과 얼마 만큼의 트래픽을 수용할 수 있는지 테스트하는 방법을 의미합니다.

이를 파악하기 위한 지표

  • Users : 동시에 사용할 수 있는 유저 수
  • TPS : 초당 몇 개의 테스트를 처리할 수 있는가 ( Test Per Swcond )
    - 한 명만 사용해도 응답 속도가 늦을 경우 -> Scale Up
    • 부하 증가 시 -> Scale out
  • Time : API 응답 속도

테스트 환경

테스트는 실제 운영 서버와 동일하거나 유사해야 합니다. 인프라 및 데이터의 양 또한 같으면 좋습니다. 만약 외부 API를 사용한다면 Mocking을 하여 테스트를 해야 합니다.

전제조건

  • 테스트하려는 Target 시스템의 범위를 정해야 한다.
  • 부하 테스트시에 저장될 데이터 양을 결정하며, 서비스 사용자 수, 사용자의 행동 패턴, 사용 기간을 고려하여 계산합니다.
  • 목표값에 대한 성능 유지 기간을 정해야 합니다.
  • 서버에 같이 동작하고 있는 다른 시스템, 제약 사항 등을 파악합니다.

테스트 종류

  • Smoke 테스트
    - VUser : 1 ~ 2

    • 최소의 부하로 시나리오를 검증
  • Load 테스트
    - 평소 트래픽과 최대 트래픽일 때 VUser 를 계산 후 시나리오를 검증

    • 결과에 따라 개선해보면서 테스트를 반복
  • Stress 테스트
    - 최대 사용자 혹은 최대 처리량인 경우 한계점을 확인하는 테스트

    • 점진적으로 부하를 증가
    • 테스트 이후 시스템이 수동 개입 없이 자동 복구되는지 확인

성능 목표 설정

성능 목표를 설정하기 위해 VUser 를 구해야합니다. ( Load 테스트인 경우 )
VUser를 구하기위해 다음과 같은 지표가 필요합니다.

  • DAU ( 일일 활동 사용자 수 )
  • 피크시간대 집중률 ( 최대 트래픽, 평소 트래픽 )
  • 1명 당 1일 평균 요청 수

대충 DAU 수와 최대 요청 수 , 평균 요청 수 를 구하자..

준비는 이걸로 마치고 다음 챕터에는 본격적으로 테스트를 진행해보겠습니다.

출처

참고 블로그 : https://leezzangmin.tistory.com/42

profile
https://github.com/5tr1ker

0개의 댓글