advanced ngrinder

55
nGrinder 초초초 초초 초초 초초초 + 초초 !!

Upload: junho-yoon

Post on 14-Nov-2014

2.416 views

Category:

Technology


0 download

DESCRIPTION

nGrinder 소개 + 고급 사용법 - 아키텍쳐 - 자이선 / 그루비 스크립트 동작 방식 - DB 테스트 - 로그 레벨 조작 방법 - 리소스 처리 방법 - 라이브러리 처리 방법 - 대규모 응답 처리 방법 - 가중치 부여 방법 - 쓰레드별 다른 처리 방법 - XML / JSON 처리 방법

TRANSCRIPT

Page 1: Advanced nGrinder

nGrinder 초딩도 하는 성능 테스트+ 심화 !!

Page 2: Advanced nGrinder

WHO AM I

30 만 라인 (±) / 1 년

nGrinder 프로젝트 리드

디자이너 출신

윤준호 / 내년 不惑

Page 3: Advanced nGrinder

개발자는 창조하는 사람

파괴에는 익숙하지 않다 .!

정확히는 문제가 있다는 사실을 알고 ( 알리고 ) 싶어하지 않는다 .

Page 4: Advanced nGrinder

이 모든 것이 핑계꺼리 ..

Page 5: Advanced nGrinder

Affordance ( 행위 유발성 )

Page 6: Advanced nGrinder

불편함은 없애고

자랑꺼리가 될 수 있다면 ?

Page 7: Advanced nGrinder

7

성능 테스트 ?

스트레스 테스트 로드 테스트

로드 상황에서 크래시 등의 문제점 확인

로드 상황에서 성능 특성 파악

성능 테스트 상식

Page 8: Advanced nGrinder

8

1 2 5 10 50 100 2000

500

1000

1500

2000

2500

ApacheNginxNginx-caching

동시사용자 #(Think Time 없을 때 )

초당처리량

로드 테스트

성능 테스트 상식

Page 9: Advanced nGrinder

부적절한 커넥션 풀 ?

불충분한 쓰레드 풀 ?

메모리 릭 ?

리소스 릭 ?

비효율적인 코드 ?

스트레스 테스트

성능 테스트 상식

Page 10: Advanced nGrinder

정의하기 나름

성능 테스트 상식

TPS(Transaction Per Second /

초당처리량 )

Page 11: Advanced nGrinder

로드를 주는 방법 ?

11

ApacheBench? LoadRunner?

NHN 과 같은 대규모 서버군에는 부적절…

성능 테스트 상식

Page 12: Advanced nGrinder

무제한 로드 부여 가능 / 대규모 테스트에 적합

컨트롤러 테스트 대상 서버

로드 생성기

부하제어

스크립트

12

분산 테스트 ?

성능 테스트 상식

Page 13: Advanced nGrinder

13

성능 테스트 상식

성능 테스트 도구는

실수까지 기록하여야 한다 .!

Page 14: Advanced nGrinder

nGrinder since 2010

Page 15: Advanced nGrinder

테스트 진행결과 리포트

테스트 설정스크립트 작성

상세 결과 보기

Page 16: Advanced nGrinder

언제든 원하는 시점에 테스트 수행

테스트 준비시간 0 분 / 학습시간 1~2 시간 ?

네트워크 오버플로우 자동 처리

NHN 에서만 월간 2000 건 성능 테스트 실행(10 배 증가 )

은근한 자부심 !!( 내가 10 배 빠르게 만들었어 )

밤샘 X 요게 중요

중간 정리

Page 17: Advanced nGrinder

컨트롤러

에이전트 1

에이전트 2

컨트롤러 + 에이전트

스크립트스크립트

Page 18: Advanced nGrinder

에이전트

프로세스 1

프로세스 2

프로세스 + 쓰레드

쓰레드 1

쓰레드 2

쓰레드 3

쓰레드 4

쓰레드 1

쓰레드 2

쓰레드 3

쓰레드 4

가상유저

스크립트스크립트

Page 19: Advanced nGrinder

내장 SVN

자이썬 그루비그루비

+메이븐

스크립팅 - 지원언어

Page 20: Advanced nGrinder

스크립팅 - 기본구조

프로세스당 한번

프로세스당 한번

지정한 만큼 반복

Page 21: Advanced nGrinder

그루비 + 메이븐 + 서브버전 + 이클립스

스크립트 디버깅 / 자동완성 / 의존성 관리

스크립팅 – IDE 지원

Page 22: Advanced nGrinder

LINE 플러스 소속 개발자가 도쿄 IDC 에 있는 서버를 테스트할 경우

클러스터링

Page 23: Advanced nGrinder

K IDC T IDC M IDC N 망 도쿄 IDC

컨트롤러 컨트롤러 컨트롤러 컨트롤러 컨트롤러

에이전트x10

에이전트x5

NAS / DB

L4 / SSO

스크립트

서버

에이전트x5

에이전트x10

에이전트x5

LINE 플러스 소속 개발자가 도쿄 IDC 에 있는 서버를 테스트할 경우

클러스터링

Page 24: Advanced nGrinder

더미를 위한 스크립팅 ..

Page 25: Advanced nGrinder

NHN 에서만 840 사용자 / 15,400 테스트 / 90% 테스트 성공률

성능 테스트 활동 활성화 (10 배 )

비용 최소화

네트워크 오버플로우 위험성 감소

큰 사이즈의 가상 유저 시뮬레이션

마지막 정리

Page 26: Advanced nGrinder

nGrinder Architecture

Page 27: Advanced nGrinder

Dynamic Architecture

Page 28: Advanced nGrinder

Static Architecture (S-ingle)

Page 29: Advanced nGrinder

Static Architecture (Cluster)

Page 30: Advanced nGrinder

nGrinder Scripting Samples

Page 31: Advanced nGrinder

스크립팅 - Groovy

프로세스당 한번

쓰레드당 한번

지정한 만큼 반복

Page 32: Advanced nGrinder

Script Executions(Groovy)

Page 33: Advanced nGrinder

스크립팅 - Jython

프로세스당 한번

쓰레드당 한번

지정한 만큼 반복

Page 34: Advanced nGrinder

Script Executions(Python)

Page 35: Advanced nGrinder

인스트루먼트

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

인스트루먼트

GTest

Test

Page 37: Advanced nGrinder

FAIL

Page 38: Advanced nGrinder

SUCCESS

Page 39: Advanced nGrinder

DB TEST

Page 40: Advanced nGrinder

LOG LEVEL

Page 41: Advanced nGrinder

리소스 읽기

Page 42: Advanced nGrinder

리소스 읽기 / Groovy Maven

Page 43: Advanced nGrinder

라이브러리 사용 (Jython / Groovy)

pom.xml 에 의존성 추가로 작업 끝 !

라이브러리 사용 (Groovy Maven Project)

Page 44: Advanced nGrinder

라이브러리 사용 (Jython / Groovy)

pom.xml 에 의존성 추가로 작업 끝 !

라이브러리 사용 (Groovy Maven Project)

Page 45: Advanced nGrinder

대규모 응답 처리하기

Page 46: Advanced nGrinder

대규모 응답 처리하기

Page 47: Advanced nGrinder

다수의 테스트 가중치 부여 실행

Page 48: Advanced nGrinder

쓰레드마다 다른 짓 하게 하기

Page 49: Advanced nGrinder

JSON 파싱하기

Page 50: Advanced nGrinder

XML 파싱하기

Page 51: Advanced nGrinder

http://www.cubrid.org/wiki_ngrinder/entry/using-ngrinder-to-perform-load-test-for-a-socket-io-app

SocketIO 테스트 하기

Page 52: Advanced nGrinder

nGrinder Operation Best Practices

Page 53: Advanced nGrinder

사용자 등록이 귀찮아 ..

SSO 플러그인 !!

Page 54: Advanced nGrinder

과도한 트래픽 ?

ngrinder network overflow plugin

Page 55: Advanced nGrinder

어뷰징 ??

시큐리티 모드