728x90
내가 만든 게시판 서비스가 부하를 얼마나 버티는지 확인하고 싶어서 검색해보니 많은 테스트툴이 있었다.
(nGrinder, Apache JMeter, Locust 등....)
=> 테스트를 진행하기 위해선 3가지 기능을 지원하는게 좋다.
1. 시나리오 기반의 테스트가 가능해야 한다.
2. 동시 접속자 수, 요청간격, 최대 Throughput 등 부하를 조정할 수 있어야 한다.
3. 부하 테스트 서버 스케일 아웃을 지원하는 등 충분한 부하를 줄 수 있어야 한다.
나는 nGrinder를 통해 테스트를 진행하려 한다.
nGrinder를 선탁한 이유는 위의 3가지 기능을 제공하고, 한글을 지원, Groovy문법 지원을 해 사용하기 편리하기 때문이다.
🟡 테스트 종류
: 스트레스 테스트(StressTest), 부하테스트(LoadTest)
스트레스 테스트
- CPU, RAM, DISK 환경이 갖추어지지 않은 어플리케이션에 비정상적으로 높은 부하를 발생시켜 한계점을 테스트해보는 것을 말한다.
- 실제로 이러한 부하가 발생시키면 VM서비스의 다운, 데이터의 소실 등의 시스템라벨의 오작동을 유발시키는 것이 가능하다.
- 이러한 결점과 결함점을 찾는 것을 목표로 스트레스 테스트가 진행되어진다.
- 어디까지나 시스템레벨에서의 결함을 예상하는 수준으로 결과물을 파악하는 것이 중요하며, 실 접속자가 발생시키는 부하량과는 매우 다른 케이스를 가질 수도 있다는 점을 유의한다.
부하 테스트
- 적절한 부하를 발생시켜서 통계적으로써 의미있는 수치를 측정한다.
- 장시간의 서비스 진행여부를 확인하는 신뢰성
- 실체 처리능력을 가능하는 성능테스트
- '부하'라는 것은 매우 포괄적이므로, 부하테스트에 사용되어지는 부하의 모든 의미를 내포하는 것으로 이해하면 좋다.
👍 nGrinder에 대해 먼저 알아봅시다.
nGrinder란?
- nGrinder는 네이버에서 제공하는 성능 테스트용 오픈 소스이다.
- Controller와 Agent로 이루어져 있다.
Controller
- 성능 테스트를 위한 웹 인터페이스를 제공
- 테스트 프로세스를 조정
- 테스트 통계를 수집하고 표시
- 사용자가 스크립트를 생성하고 수정할 수 있는 기능 지원
Agent
- Agent Mode가 실행될 때 Target 서버에 프로세스 및 스레드를 실행 시켜 부하 발생
- Moniter 모드에서 실행 시 대상 시스템 성능 ( 예 : CPU / 메모리 ) 모니터링
🖥️ Docker에 nGrinder 설치하기
1.일단 Controller를 설치한다.
-> docker pull ngrinder/controller
-> docker run -d -p 80:80 -p 16001:16001 -p 12000-12009:12000-12009 ngrinder/controller
-> Docker 실행화면
- 80 : 80 -> Controller 웹 UI를 위한 포트 매핑, nGrinder의 웹 인터페이스에 접근하기 위해 호스트의 80번 포트를 컨테이너의 80번 포트로 매핑하고 웹 브라우저에서 'http:localhost'를 통해 접속할 수 있다.
- 16001 : 16001 -> Agent를 Controller에 연결되기 위한 연결 포트, Agent는 테스트를 수행하는데 사용되는 원격 머신이다.
- 12000 - 12009 : 12000 - 12009 -> Controller가 스트레스 테스트를 위해 사용하는 포트 범위이다. nGrinder가 테스트를 수행할 때 컨트롤러가 호스트의 12000에서 12009사이의 포트를 사용하여 테스트를 할당한다.
2. Agent를 설치한다.
-> docker pull ngrinder/agent
-> docker run -d --name agent --link controller:controller ngrinder/agent
'Basic > 코딩기초' 카테고리의 다른 글
[코딩기초]Facade Pattern (0) | 2023.09.22 |
---|---|
[코딩기초] 무한스크롤 VS 페이지네이션 (0) | 2023.07.18 |
[코딩기초] 온프레미스(On-Premise) VS 클라우드(Cloud) (0) | 2023.06.17 |
[Redis] 서버운영과 Redis (0) | 2023.05.04 |
[Cloud] Cloud? (0) | 2023.03.23 |