advanced ngrinder
DESCRIPTION
nGrinder 소개 + 고급 사용법 - 아키텍쳐 - 자이선 / 그루비 스크립트 동작 방식 - DB 테스트 - 로그 레벨 조작 방법 - 리소스 처리 방법 - 라이브러리 처리 방법 - 대규모 응답 처리 방법 - 가중치 부여 방법 - 쓰레드별 다른 처리 방법 - XML / JSON 처리 방법TRANSCRIPT
![Page 1: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/1.jpg)
nGrinder 초딩도 하는 성능 테스트+ 심화 !!
![Page 2: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/2.jpg)
WHO AM I
30 만 라인 (±) / 1 년
nGrinder 프로젝트 리드
디자이너 출신
윤준호 / 내년 不惑
![Page 3: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/3.jpg)
개발자는 창조하는 사람
파괴에는 익숙하지 않다 .!
정확히는 문제가 있다는 사실을 알고 ( 알리고 ) 싶어하지 않는다 .
![Page 4: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/4.jpg)
이 모든 것이 핑계꺼리 ..
![Page 5: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/5.jpg)
Affordance ( 행위 유발성 )
![Page 6: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/6.jpg)
불편함은 없애고
자랑꺼리가 될 수 있다면 ?
![Page 7: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/7.jpg)
7
성능 테스트 ?
스트레스 테스트 로드 테스트
로드 상황에서 크래시 등의 문제점 확인
로드 상황에서 성능 특성 파악
성능 테스트 상식
![Page 8: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/8.jpg)
8
1 2 5 10 50 100 2000
500
1000
1500
2000
2500
ApacheNginxNginx-caching
동시사용자 #(Think Time 없을 때 )
초당처리량
로드 테스트
성능 테스트 상식
![Page 9: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/9.jpg)
부적절한 커넥션 풀 ?
불충분한 쓰레드 풀 ?
메모리 릭 ?
리소스 릭 ?
비효율적인 코드 ?
스트레스 테스트
성능 테스트 상식
![Page 10: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/10.jpg)
정의하기 나름
성능 테스트 상식
TPS(Transaction Per Second /
초당처리량 )
![Page 11: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/11.jpg)
로드를 주는 방법 ?
11
ApacheBench? LoadRunner?
NHN 과 같은 대규모 서버군에는 부적절…
성능 테스트 상식
![Page 12: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/12.jpg)
무제한 로드 부여 가능 / 대규모 테스트에 적합
컨트롤러 테스트 대상 서버
로드 생성기
부하제어
스크립트
12
분산 테스트 ?
성능 테스트 상식
![Page 13: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/13.jpg)
13
성능 테스트 상식
성능 테스트 도구는
실수까지 기록하여야 한다 .!
![Page 14: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/14.jpg)
nGrinder since 2010
![Page 15: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/15.jpg)
테스트 진행결과 리포트
테스트 설정스크립트 작성
상세 결과 보기
![Page 16: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/16.jpg)
언제든 원하는 시점에 테스트 수행
테스트 준비시간 0 분 / 학습시간 1~2 시간 ?
네트워크 오버플로우 자동 처리
NHN 에서만 월간 2000 건 성능 테스트 실행(10 배 증가 )
은근한 자부심 !!( 내가 10 배 빠르게 만들었어 )
밤샘 X 요게 중요
중간 정리
![Page 17: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/17.jpg)
컨트롤러
에이전트 1
에이전트 2
컨트롤러 + 에이전트
스크립트스크립트
![Page 18: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/18.jpg)
에이전트
프로세스 1
프로세스 2
프로세스 + 쓰레드
쓰레드 1
쓰레드 2
쓰레드 3
쓰레드 4
쓰레드 1
쓰레드 2
쓰레드 3
쓰레드 4
가상유저
스크립트스크립트
![Page 19: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/19.jpg)
내장 SVN
자이썬 그루비그루비
+메이븐
스크립팅 - 지원언어
![Page 20: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/20.jpg)
스크립팅 - 기본구조
프로세스당 한번
프로세스당 한번
지정한 만큼 반복
![Page 21: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/21.jpg)
그루비 + 메이븐 + 서브버전 + 이클립스
스크립트 디버깅 / 자동완성 / 의존성 관리
스크립팅 – IDE 지원
![Page 22: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/22.jpg)
LINE 플러스 소속 개발자가 도쿄 IDC 에 있는 서버를 테스트할 경우
클러스터링
![Page 23: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/23.jpg)
K IDC T IDC M IDC N 망 도쿄 IDC
컨트롤러 컨트롤러 컨트롤러 컨트롤러 컨트롤러
에이전트x10
에이전트x5
NAS / DB
L4 / SSO
스크립트
서버
에이전트x5
에이전트x10
에이전트x5
LINE 플러스 소속 개발자가 도쿄 IDC 에 있는 서버를 테스트할 경우
클러스터링
![Page 24: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/24.jpg)
더미를 위한 스크립팅 ..
![Page 25: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/25.jpg)
NHN 에서만 840 사용자 / 15,400 테스트 / 90% 테스트 성공률
성능 테스트 활동 활성화 (10 배 )
비용 최소화
네트워크 오버플로우 위험성 감소
큰 사이즈의 가상 유저 시뮬레이션
마지막 정리
![Page 26: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/26.jpg)
nGrinder Architecture
![Page 27: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/27.jpg)
Dynamic Architecture
![Page 28: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/28.jpg)
Static Architecture (S-ingle)
![Page 29: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/29.jpg)
Static Architecture (Cluster)
![Page 30: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/30.jpg)
nGrinder Scripting Samples
![Page 31: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/31.jpg)
스크립팅 - Groovy
프로세스당 한번
쓰레드당 한번
지정한 만큼 반복
![Page 32: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/32.jpg)
Script Executions(Groovy)
![Page 33: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/33.jpg)
스크립팅 - Jython
프로세스당 한번
쓰레드당 한번
지정한 만큼 반복
![Page 34: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/34.jpg)
Script Executions(Python)
![Page 35: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/35.jpg)
인스트루먼트
MyTest object = new MyTest();Gtest test = new Gtest(1, “ 통계 1”)test.record(object, “sendMessageToGoogle”)
class MyTest {
public void sendMessageToGoogle() {
구글에 HTTP 를 보내고 , 결과 검증
}
}
통계 1 을 준비하라
여기까지 왔으면 테스트가 성공한거다 . 통계 1 에 트랜잭션을 하나 올려라
![Page 36: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/36.jpg)
인스트루먼트
GTest
Test
![Page 37: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/37.jpg)
FAIL
![Page 38: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/38.jpg)
SUCCESS
![Page 39: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/39.jpg)
DB TEST
![Page 40: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/40.jpg)
LOG LEVEL
![Page 41: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/41.jpg)
리소스 읽기
![Page 42: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/42.jpg)
리소스 읽기 / Groovy Maven
![Page 43: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/43.jpg)
라이브러리 사용 (Jython / Groovy)
pom.xml 에 의존성 추가로 작업 끝 !
라이브러리 사용 (Groovy Maven Project)
![Page 44: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/44.jpg)
라이브러리 사용 (Jython / Groovy)
pom.xml 에 의존성 추가로 작업 끝 !
라이브러리 사용 (Groovy Maven Project)
![Page 45: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/45.jpg)
대규모 응답 처리하기
![Page 46: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/46.jpg)
대규모 응답 처리하기
![Page 47: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/47.jpg)
다수의 테스트 가중치 부여 실행
![Page 48: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/48.jpg)
쓰레드마다 다른 짓 하게 하기
![Page 49: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/49.jpg)
JSON 파싱하기
![Page 50: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/50.jpg)
XML 파싱하기
![Page 51: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/51.jpg)
http://www.cubrid.org/wiki_ngrinder/entry/using-ngrinder-to-perform-load-test-for-a-socket-io-app
SocketIO 테스트 하기
![Page 52: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/52.jpg)
nGrinder Operation Best Practices
![Page 53: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/53.jpg)
사용자 등록이 귀찮아 ..
SSO 플러그인 !!
![Page 54: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/54.jpg)
과도한 트래픽 ?
ngrinder network overflow plugin
![Page 55: Advanced nGrinder](https://reader035.vdocuments.site/reader035/viewer/2022081413/5465e238af79597e288b5501/html5/thumbnails/55.jpg)
어뷰징 ??
시큐리티 모드