일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- linux
- IntelliJ
- MySQL
- laravel
- java
- AWS
- Oracle
- Spring Boot
- Spring
- ReactJS
- javascript
- Design Patterns
- Git
- Gradle
- springboot
- Spring Batch
- jenkins
- jsp
- 요리
- Web Server
- elasticsearch
- db
- devops
- redis
- 맛집
- tool
- ubuntu
- php
- it
- JVM
Archives
- Today
- Total
아무거나
Ngrinder을 사용한 부하 테스트 본문
반응형
Ngrinder Document
설명
-
Load Test
- 부하 테스트 혹은 스트레스 테스트라고 한다
- 일부러 시스템에 부하를 발생시킴
- 얼마만큼의 부하를 버틸 수 있는지 평가한다
-
Ngrinder란?
- Load Test를 하기위한 소프트웨어이다
- NHN에서 개발
- 오픈소스 부하 테스트 도구인 grinder를 기반으로 작성
- 웹 기반으로 테스트를 진행할 수 있다
- 복수의 장비를 이용해서 대상 시스템에 큰 부하를 발생시킬 수 있다
- 스크립트를 작성하여 테스트 시나리오를 만들 수 있다
-
Ngrinder 구성요소
- Controller
- 웹 기반 GUI 시스템
- 유저 관리(멀티 유저 기반)
- 에이전트 관리
- 부하 테스트 실시 & 모니터링
- 부하 시나리오를 작성하고 테스트한 내역을 저장하고 재활용 할 수 있다
- Agent
- 부하를 발생시키는 대상 또는 주체라고 한다
- Controller의 지휘를 받는다
- 복수의 머신에 설치해서 Controller의 신호에 따라서 일시에 부하를 발생시킨다
- Controller
설치
-
필수 설치사항 ( 해당 포스팅 버전은 java JDK 11 + Tomcat8 버전을 사용함 )
- ngrinder controller
- java JDK 1.6 이상
- tomcat 6.x 이상
- ngrinder agent
- java JDK 1.6 이상
- ngrinder controller
-
ngrinder controller(=ui) 설치
- tomcat 설치
$ wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz $ sudo tar xzf apache-tomcat-8.5.61.tar.gz $ sudo mv apache-tomcat-8.5.61 /usr/share/tomcat8
- tomcat 환경변수 추가 (마지막 아래 하기 2줄 추가)
- $ sudo vi /etc/profile
export CATALINA_HOME=/usr/share/tomcat8 export PATH=$PATH:$CATALINA_HOME/bin
- 적용 및 확인
$ source /etc/profile $ echo $CATALINA_HOME
- $ sudo vi /etc/profile
- tomcat 실행
- $ sudo sh /usr/share/tomcat8/bin/startup.sh
- tomcat 서비스 등록
- $ sudo vi /etc/init.d/tomcat8
#!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat8 # chkconfig: 234 20 80 JAVA_HOME=$JAVA_HOME export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/usr/share/tomcat8 case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;; esac exit 0
- 파일 저장 후 권한 변경
$ sudo chmod +x /etc/init.d/tomcat8 $ sudo chmod 755 /etc/init.d/tomcat8
- centos가 재시작되면 자동으로 tomcat이 실행되도록 chkconfig에도 추가 -> systemd를 더 많이 사용하므로 기회가되면 다르게 적용하자
$ sudo chkconfig --add tomcat8 $ sudo chkconfig --list tomcat8
- tomcat 로그 및 webapps 권한 설정
$ sudo chown -R bkjeon:bkjeon /usr/share/tomcat8/logs $ sudo chown -R bkjeon:bkjeon /usr/share/tomcat8/webapps $ sudo chmod -R u+rw /usr/share/tomcat8/logs $ sudo chmod -R u+rw /usr/share/tomcat8/webapps
- tomcat에 JAVA_OPTS 추가 (ngrinder은 메모리를 많이 잡아먹으므로 메모리를 늘려준다)
- $ sudo vi /usr/share/tomcat8/bin/catalina.sh
... # 주석이 끝나는 부분에 추가 JAVA_OPTS="-Xms600m -Xmx1024m -XX:MaxPermSize=200m" ...
- $ sudo service tomcat8 restart
- $ sudo vi /usr/share/tomcat8/bin/catalina.sh
- tomcat 프로세스 및 로그 확인
$ ps -ef | grep java // 프로세스 $ sudo tail -f /usr/share/tomcat8/logs/catalina.out // 로그
- ngrinder controller 설치
$ cd /usr/share/tomcat8/webapps/ $ wget https://github.com/naver/ngrinder/releases/download/ngrinder-3.5.3-20201127/ngrinder-controller-3.5.3.war
- ngrinder 접속
- $ http://<서버 IP>:<서버 Port>/ngrinder-controller-3.5.3
- admin / admin 으로 로그인
- admin password 변경
- 우측 상단의 admin 프로필 클릭 > 사용자 관리 > admin user 클릭
- 비밀번호 변경을 클릭하여 새로운 비밀번호로 저장하자.(전화번호는 필수 값이므로 입력 필요)
- $ sudo vi /etc/init.d/tomcat8
- tomcat 설치
-
ngrinder agent 설치
- ngrinder agent 다운
- ngrinder web에서 우측 상단에 프로필 클릭 후 에이전트 다운로드 링크를 복사하여 wget으로 다운
$ cd /usr/local $ sudo wget http://{grinder web ip}/ngrinder-controller-3.5.3/agent/download/ngrinder-agent-3.5.3-192.168.0.208.tar $ sudo tar xvf ngrinder-agent-3.5.3-192.168.0.208.tar $ sudo rm -f ngrinder-agent-3.5.3-192.168.0.208.tar
- java 환경변수 설정 (안되있으면 참조)
// ~/.bashrc에 하기 내용을 추가 export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
- 자신의 소유로 run_agent.sh의 권한을 변경한다. 필자는 bkjeon라는 아이디를 사용하고 있기 때문에 아래와 같이 설정
$ sudo chown bkjeon:bkjeon /usr/local/ngrinder-agent/run_agent.sh
- run_agent에 실행권한을 부여
$ sudo chmod u+x /usr/local/ngrinder-agent/run_agent.sh
- agent 실행
// waiting for agent controller server signal 이 표시되면 정상적으로 실행 -> ngrinder web에서 에이전트 관리 리스트에서도 표시되면 OK $ /usr/local/ngrinder-agent/run_agent.sh
- 만약 controller과 agent가 서로 다른머신에 설치되어 있거나 아니면 하나의 컨트롤러에 여러 agent로 구성했으면 해당 agent의 세팅을 agent.conf에서 변경하자 $ vi ~/.ngrinder_agent/agent.conf
... start.mode=agent agent.console.ip=127.0.0.1 // controller가 설치되어있는 ip or domain으로 변경 ...
- ngrinder agent 다운
-
ngrinder 부하 테스트
- ngrinder web에서 Quick Start에 URL을 입력 후 테스트 시작 클릭
- 설명
- 에이전트: ngrinder agent 개수
- 에이전트별 가상사용자: 각각 agent별 동시접속자 수
- ex) 에이전트:10, 에이전트별 가상사용자:10 -> 10개의 에이전트가 각각 10명씩 사용자를 만드므로 즉, 100명의 동시접속자 수를 생성
- 프로세스와 쓰레드 설정
- 주로 쓰레드를 사용하라고 권장
- 프로세스를 사용하는 경우는 독립된 에이전트를 통해서 접속해야하는 경우에 사용
- Ramp-Up 사용
- 조금씩 사용자를 늘려나갈 때 해당 기능을 사용
- 늘어나는 사용자의 숫자를 프로세스이기 때문에 Ramp-Up 기능을 사용하려면 프로세스 숫자를 높여야한다. (openjdk 기준으로 프로세스를 증가시킬 경우 오류가 발생한다. oraclejdk는 문제 없음)
- x축: 시간흐름, y축: 동시접속자
- ex) 초기 대기시간:2, Ramp-Up 주기: 2000 -> 즉, 2초마다 2개의 프로세스가 생성
- 스크립트
- 사용자의 실제 사용 패턴을 시뮬레이션 하거나 처리해야될 로직들을 수정할 수 있다. (자세한 내용은 공부 필요)
- 실행 횟수
- ex) 에이전트:10, 에이전트별 가상사용자:10, 실행횟수:10 -> 10 * 10 * 10 = 1000 이므로 즉, 1000명의 동시접속자 수를 생성
- 모든 설정이 끝난 후 저장 또는 저장 후 시작을 클릭
- 테스트 보고서 설명
- TPS(=Transaction Per Second): 초딩 처리량 즉, 높을수록 좋다
- MTT(=Mean Test Time) -> 평균 테스트 시간
- ex) 20.12 이면 ms단위이므로 0.02초이다
반응형
'Infra > DevOps' 카테고리의 다른 글
배포전략(Rolling, Blue/Green, Canary) (0) | 2022.07.01 |
---|---|
[pinpoint] pinpoint 2.2.0 설치 및 실행 가이드 (3) | 2020.12.30 |
[virtualBox] 고정 IP 할당 (CentOS7 기준) (0) | 2020.06.11 |
[VirtualBox] VirtualBox 에서 디스크 크기 변경하기(동적할당 or 고정할당) (0) | 2020.05.22 |
[VirtualBox] VirtualBox 포트포워딩 방법 (0) | 2020.05.11 |
Comments