본문 바로가기

리눅스

nGrinder를 사용하여 성능 테스트를 수행하는 방법

728x90

nGrinder를 사용하여 성능 테스트를 수행하는 방법

nGrinder는 분산된 부하 테스트를 수행할 수 있는 오픈 소스 성능 테스트 도구입니다. nGrinder는 컨트롤러(Controller)와 에이전트(Agent)로 구성되어 있습니다. 컨트롤러는 테스트를 계획하고 모니터링하는 역할을 하며 에이전트는 테스트를 실행하는 데 사용됩니다.

1. Java 설치

nGrinder는 Java로 작성되어 있으므로 Java를 설치해야 합니다.

2. nGrinder 컨트롤러 설치

2.1 nGrinder 컨트롤러 다운로드

nGrinder 컨트롤러를 다운로드하고 원하는 디렉토리에 압축을 해제합니다.

mkdir -pv ~/ngrinder/ngrinder-controller
cd ~/ngrinder/ngrinder-controller
wget https://github.com/naver/ngrinder/releases/download/ngrinder-3.5.8-20221230/ngrinder-controller-3.5.8.war

2.2 컨트롤러 실행

nGrinder 컨트롤러를 실행합니다.

java -jar ngrinder-controller-3.5.8.war

2.3 브라우저 액세스

컨트롤러는 기본적으로 8080 포트를 사용합니다.

브라우저에서 http://localhost:8080으로 접속하여 nGrinder 컨트롤러에 액세스할 수 있습니다.

http://localhost:8080

ngrinder1

3. nGrinder 에이전트 설치

3.1 에이전트 다운로드

nGrinder 에이전트를 다운로드하고 원하는 디렉토리에 압축을 해제합니다.

cd ngrinder-agent
wget http://NGRINDER-SERVER-IP:8080/agent/download/ngrinder-agent-3.5.8.tar

3.2. 에이전트 실행

nGrinder 에이전트를 실행합니다. 컨트롤러의 IP 주소와 포트를 지정해야 합니다.

java -jar ngrinder-agent-3.5.2.war controllerIP:controllerPort
더보기

---

3.1 에이전트 다운로드

nGrinder 에이전트를 다운로드하고 원하는 디렉토리에 압축을 해제합니다.

wget http://NGRINDER-SERVER-IP:8080/agent/download/ngrinder-agent-3.5.8-NGRINDER-SERVER-IP.tar
tar xf ngrinder-agent-3.5.8-NGRINDER-SERVER-IP.tar
$ tree -L 1
.
├── __agent.conf
├── lib
├── run_agent.bat
├── run_agent_bg.sh
├── run_agent_internal.bat
├── run_agent_internal.sh
├── run_agent.sh
├── stop_agent.bat
└── stop_agent.sh

1 directory, 8 files

3.2. 에이전트 실행

nGrinder 에이전트를 실행합니다. 컨트롤러의 IP 주소와 포트를 지정해야 합니다.

cd ngrinder-agent
vim __agent.conf
common.start_mode=agent
agent.controller_host=NGRINDER-SERVER-IP
agent.controller_port=16001
agent.subregion=
agent.owner=
#agent.host_id=
#agent.server_mode=true

# provide more agent java execution option if necessary.
#agent.java_opt=
# provide more agent jvm classpath if necessary.
#agent.jvm.classpath=
# set following false if you want to use more than 1G Xmx memory per a agent process.
#agent.limit_xmx=true
# please uncomment the following option if you want to send all logs to the controller.
#agent.all_logs=true
# some jvm is not compatible with DNSJava. If so, set this false.
#agent.enable_local_dns=false
# please uncomment the following option if you want to run controller_to_agent connection mode agent.
#agent.connection_mode=controller_to_agent
#agent.connection_port=14000
# set following with the ip you want to broadcast yourself. Set this option if the agent needs to be discovered as public ip.
#agent.broadcast_ip=
./run_agent_bg.sh
$ bash run_agent_bg.sh
nohup: redirecting stderr to stdout

---

ngrinder2

4. 테스트 계획 및 실행

컨트롤러에 액세스하여 테스트 계획을 만들고 실행합니다. nGrinder 사용자 가이드 및 문서에서 자세한 정보를 찾을 수 있습니다.

728x90

nGrinder 주요 설정 속성

주요 설정 속성으로는 Duration(테스트 시간), Run Count(실행 횟수), Ramp-Up(램프 업)이 있습니다.

주요 설정

1. Duration (테스트 기간)

Duration은 성능 테스트가 지속되는 시간을 의미합니다. 일정 시간 동안 시스템에 대한 부하를 유지하면서 성능을 측정합니다.

예를 들어, 10분 동안의 지속 시간을 설정하려면 다음과 같이 합니다.

# properties 파일 예시
grinder.duration = 600000  # 밀리초 단위, 여기서는 10분

2. Run Count (실행 횟수)

Run Count는 각 에이전트에서 테스트 스크립트를 실행하는 횟수를 나타냅니다. 테스트 시나리오에 따라 적절한 실행 횟수를 선택합니다.

예를 들어, 100,000번의 실행을 수행하려면 다음과 같이 설정합니다.

# properties 파일 예시
grinder.runs = 100000

3. Ramp-Up (램프 업)

Ramp-Up은 시스템에 부하를 조금씩 증가시키는데 사용됩니다. 모든 사용자가 동시에 시작되는 것을 방지하고 서버에 안정적으로 부하를 가하도록 합니다.

예를 들어, 100개의 사용자를 1분 동안 램프 업하려면 다음과 같이 설정합니다.

# properties 파일 예시
grinder.processes = 100
grinder.duration = 60000  # 1분
grinder.rampUp = 60000   # 1분 동안 100개의 사용자 램프 업

이러한 설정을 조절하여 특정 시나리오에 맞게 Grinder 성능 테스트를 수행할 수 있습니다. 설정 값은 테스트하려는 애플리케이션의 특성 및 목표에 따라 다르므로 적절한 값을 찾아가며 조절해야 합니다.

 

참고: nGrinder의 버전이 변경될 경우 해당 버전의 문서를 참조하여 더 자세한 정보를 얻을 수 있습니다. 이 가이드는 3.5.2 버전을 기준으로 합니다.

 

참고URL

- github : GitHub - naver/ngrinder: enterprise level performance testing solution

 

728x90