오늘은 nGrinder를 이용해 부하테스트를 해보겠습니다.
실사용 환경과 비슷한 환경에서 테스트를 진행하는 것을 성능테스트라고 합니다.
성능테스트는 주로 시스템 개발 종료시점에 수행하며 서비스나 서비스 시스템의 문제점을 개선하는데 주로 목적을 가집니다.
순간적으로 최대치의 트래픽 부하를 줘보는 것을 부하테스트라고 합니다.
스트레스 테스트는 부하테스트와 비슷하나 장기적으로 부하를 줘보는 것입니다.
어느 정도의 부하를 견디는 지, 한계치에서 병목이 생기는 지점이 어디인지, 메모리 누수가 발생하는 지, 최악의 상황에서 어떤 동작을 하는 지 등 확인 가능!
네이버에서 성능 측정 목적으로 grinder 기반으로 개발한 오픈소스 프로젝트
부하테스트를 위해 웹 인터페이스를 제공한다.
부하를 받는 대상 머신
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
설정한 포트를 통해 접속
기본 아이디와 비밀번호는 admin / admin 입니다.
부하를 발생할 에이전트를 에이전트탭에서 설정 가능합니다. 에이전트는 별도로 컨테이너를 띄워서 등록해야 합니다. 이번 실습에는 하나의 에이전트만 사용할 예정입니다.
script
-> create
를 눌러 Groovy 타입으로 스크립트를 작성합니다.
performance test
-> create test
로 테스트를 생성합니다.
script 영역에서 앞서 생성한 스크립트를 지정합니다.
앞서 등록한 Agent 개수를 지정하고 각 에이전트에서 프로세스와 스레드를 생성하여 가상의 사용자를 지정합니다.
Duration
은 얼마나 부하를 지속할건지 시간을 지정합니다.
5분간 9명의 가상 유저가 스크립트의 내용에 따라 부하를 주도록 하였습니다.
오른쪽에 Enable Ramp-Up
을 눌러 부하를 점진적으로 쌔게 줄 수도 있습니다.
오른쪽 위에 스타트 버튼을 눌러 성능테스트를 시작합니다.
제가 테스트하고자 하는 조회 API는 500TPS가 나왔군요! 아주 좋습니다.
Detailed Report
를 눌러 상세하게 하거나 로그를 다운받아 확인이 가능합니다.