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