nGrinder
nGrinder란?
nGrinder는 네이버에서 만든 오픈소스 부하 테스트 도구입니다.
nGrinder에서는 아래의 load parameter를 통해 performace test 결과를 보여줍니다.
테스트 결과를 바탕으로 target server가 동시 접속자 수 x명(vUser
)일때, 서버가 적절한 response time으로 응답하는지 peak TPS는 어떻게 되는지, MTT는 어떻게 되는지 등을 판단할 수 있습니다.
매개변수 | 설명 |
---|---|
TPS | 초당 처리한 요청 수를 나타냅니다. |
Peak TPS | TPS가 가장 높을 때, 즉 초당 처리 가능한 최대 요청 수를 나타냅니다. |
MTT (Mean Test Time) | 개별 테스트의 평균 수행 시간으로, API 호출 외의 시간이 포함될 수 있습니다. nGrinder QNA에서 평균 API 응답시간이라고 설명됩니다. |
MTTFB (Mean Time to First Byte) | 테스트 이후 테스트 타겟 서버로부터 첫 번째 바이트를 응답받기까지의 평균 시간입니다. (평균 API 응답시간과 동일) |
Executed Tests | 실행한 테스트 수를 나타냅니다. |
nGrinder Architecture
nGrinder는 2개의 주요 구성 요소로 구성됩니다:
- Controller: 성능 테스트를 위한 웹 UI를 제공하며, 테스트 결과를 시각화하고 에이전트 풀을 관리하며, 테스트 스크립트를 생성, 수정, 삭제합니다.
- Agent: 테스트 대상 서버에 실제 부하를 주는 서버로, API 사용자 역할을 합니다.
Controller와 Agent는 12001~120XX 포트를 사용하여 통신합니다.
테스트 스크립트 실행시..
- Controller는 내장 SVN 서버를 포함하여 스크립트 코드를 버전 관리합니다.
- Controller UI에서 테스트 스크립트를 실행하거나 예약할 수 있으며, 사용 가능한 에이전트를 풀에서 동적으로 할당하여 테스트 스크립트를 실행합니다.
- Agent 서버가 대상 서버에 부하를 줍니다.
test configuration parameters
필드 | 설명 |
---|---|
Agent | 사용할 Agent 개수를 설정합니다. |
Vuser per agent | Agent 당 생성할 가상 사용자(vUser) 수로, Process * Thread 개수로 결정됩니다. |
Script | Agent에서 실행할 테스트 스크립트를 선택합니다. |
Target Host | 모니터링할 대상 서버를 설정합니다. |
Duration | 각 테스트의 실행 시간을 설정합니다. |
Run Count | 수행할 테스트 개수를 설정합니다. (API 호출 개수와 동일) |
전체 vUser는 아래와 같이 계산됩니다.
1 | vUser = Agent * Process * Thread |
duration으로 부하 테스트를 지정 시간동안 돌릴 수 있고, Run Count로 테스트 개수별로 threshold를 주어 돌릴 수도 있습니다.
nGrinder Agent 설정
nGrinder Agent는 Controller에서 다운로드하여 실행할 수 있습니다.
설정 파일 (ngrinder_agent/agent.conf
)을 통해 Agent의 설정 값을 지정할 수 있습니다.
1 | common.start_mode=agent |
Reference