Advanced nGrinder 2nd Edition

3,744
-1

Published on

nGrinder 심화 과정 (3시간분량)

Published in: Technology
0 Comments
54 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,744
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
122
Comments
0
Likes
54
Embeds 0
No embeds

No notes for slide

Advanced nGrinder 2nd Edition

  1. 1. nGrinder 초딩도 하는 성능 테스트 + 심화 (2nd Edition) 1
  2. 2. 성능 테스트 상식 성능 테스트? 스트레스 테스트 로드 테스트 로드 상황에서 크래시 등의 문제점 확인 로드 상황에서 성능 특성 파악 2
  3. 3. 성능 테스트 상식 로드 테스트 초당 처리량 2500 2000 1500 Apache Nginx 1000 Nginx-caching 500 0 1 2 5 10 50 100 200 동시사용자 # (Think Time 없을 때) 3
  4. 4. 성능 테스트 상식 스트레스 테스트 부적절한 커넥션 풀? 불충분한 쓰레드 풀? 메모리 릭? 리소스 릭? 비효율적인 코드?
  5. 5. 성능 테스트 상식 TPS (Transaction Per Second / 초당처리량) 정의하기 나름
  6. 6. 성능 테스트 상식 로드를 주는 방법? ApacheBench? LoadRunner? 대규모 서버군에는 부적절… MacOS? 6
  7. 7. 성능 테스트 상식 분산 테스트? 제어 부하 스크 립트 테스트 대상 서버 컨트롤러 로드 생성기 무제한 로드 부여 가능 / 대규모 테스트에 적합 7
  8. 8. 개발자는 창조하는 사람 파괴에는 익숙하지 않다.!
  9. 9. 이 모든 것이 핑계꺼리..
  10. 10. Affordance (행위 유발성)
  11. 11. nGrinder since 2010 혼자서 몰래 실행해 볼 수 있을 정도로 접근성이 좋을 것
  12. 12. nGrinder since 2010 실수까지 기록할것! 12
  13. 13. nGrinder since 2010
  14. 14. 스크립트 작성 테스트 설정 상세 결과 보기 결과 리포트 테스트 진행
  15. 15. 중간 정리 언제든 원하는 시점에 테스트 수행 테스트 준비시간 0분 / 학습시간 1~2시간? SE와 싸울 필요 없음 작은 투자 그리고 큰 결과 (10배 빠르게 하는 것은 순식간) N사에서만 월간 2000~3000건 성능 테스트 실행 밤샘 X  요게 중요
  16. 16. 컨트롤러+에이전트 에이전트1 컨트 롤러 스크 립트 에이전트2
  17. 17. 프로세스+쓰레드 프로세스1 쓰레드 1 쓰레드 2 쓰레드 3 스크 립트 쓰레드 4 에이 전트 프로세스2 쓰레드 1 쓰레드 2 쓰레드 3 쓰레드 4 가 상 유 저
  18. 18. 스크립팅 - 지원언어 자이썬 그루비 내장 SVN 그루비 + 메이븐
  19. 19. 스크립팅 - 기본구조 프로세스당 한번 프로세스당 한번 지정한 만큼 반복
  20. 20. 스크립팅 – IDE 지원 그루비 + 메이븐 + 서브버전 + 이클립스 스크립트 디버깅 / 자동완성 / 의존성 관리
  21. 21. 클러스터링 LP 소속 개발자가 T IDC 에 있는 서버를 테스트할 경우
  22. 22. 클러스터링 LP 소속 개발자가 T IDC 에 있는 서버를 테스트할 경우 스크립트 L4 / SSO 컨트롤러 컨트롤러 컨트롤러 컨트롤러 컨트롤러 에이전트 x5 에이전트 x5 NAS / DB 에이전트 x10 에이전트 x5 에이전트 x10 서버 K IDC T IDC M IDC N망 도쿄IDC
  23. 23. 협업 내 스크립트를 다른 사람도 에디팅하고 실행했으면 좋겠다. 유저 계정 공유
  24. 24. 더미를 위한 스크립팅..
  25. 25. 중간 정리 N사에서만 1100 사용자 / 25,400 테스트 / 90% 테스트 성공률 성능 테스트 활동 활성화 큰 사이즈의 가상 유저 시뮬레이션 비용 최소화 네트워크 오버플로우 위험성 감소
  26. 26. nGrinder Architecture
  27. 27. Dynamic Architecture
  28. 28. Static Architecture (Single)
  29. 29. Static Architecture (Cluster)
  30. 30. nGrinder 설치 / 설정
  31. 31. 단독 실행 모드 다운로드 : http://sourceforge.net/projects/ngrinder/files java -XX:MaxPermSize=200m -jar ngrinder-controller-3.3.war http://localhost:8080 방문 및 로그인 admin / admin 컨트롤러에서 에이전트 다운로드 및 실행 run_agent.sh
  32. 32. Easy Cluster 모드 일반 Cluster 모드가 NAS와 Cubrid 를 필요로 하여 설치가 까다로운 단점을 보완 One Single Server controller (region1) ~/.ngrinder controller (region2) controller (region3) H2 TCPServer
  33. 33. Easy Cluster 모드 H2 다운로드 : http://www.h2database.com/h2-2014-01-18.zip H2 DB 실행 (bin/h2.sh) java -jar -XX:MaxPermSize=200m -jar ngrinder-controller-3.3.war -p 8080 -cm easy -clp 10010 -r region1 -cp 9001
  34. 34. 테스트 설정
  35. 35. 샘플링? 1초 2초 3초 4초 5초 6초 7초 샘플링주기1 2초 4초 6초 샘플링주기2 샘플링 주기가 길수록 좀 더 평평한 그래프가 나옴
  36. 36. RAMP UP
  37. 37. RAMP UP
  38. 38. RAMP UP
  39. 39. RAMP UP
  40. 40. 테스트 대상 서버 타겟에 모니터 실행시  CPU/Mem/Network 수집 도메인명 / IP 동시 입력시  ETC/HOST 도메인명 / 다수 IP 입력시  L4 시뮬레이션
  41. 41. 테스트 대상 서버 서버A1 에이 전트 서버A2 IP_A 서버A3 L4 서버B1 IP_B 서버B2 서버B3 L4는 공유자원
  42. 42. 테스트 대상 서버 서버A1 www.target.com 서버A2 에이 전트 서버A3 L4 서버B1 IP_B 서버B2 서버B3 L4는 공유자원
  43. 43. nGrinder Scripting Basics
  44. 44. 스크립팅 - Groovy 프로세스당 한번 쓰레드당 한번 지정한 만큼 반복
  45. 45. Script Executions(Groovy)
  46. 46. 트랜잭션 MyTest object = new MyTest(); GTest test = new GTest(1, “통계1”) test.record(object, “sendMessageToGoogle”) 트랜잭션 단위로 보고 싶은 메소드를 레코딩 메소드가 정상적으로 실행시 트랜잭션 1개 증가 메소드가 예외 등으로 인해 비정상 실행시 트랜잭션 0개 증가
  47. 47. 트랜잭션 - 인스투르먼트 MyTest object = new MyTest(); GTest test = new GTest(1, “통계1”) test.record(object, “sendMessageToGoogle”) class MyTest { public void sendMessageToGoogle() { 통계 1을 준비하라 구글에 HTTP를 보내고, 결과 검증 여기까지 왔으면 테스트가 성공한거다. 통계1에 트랜잭션을 하나 올려라 } }
  48. 48. 트랜잭션 - 인스투르먼트 GTest Test
  49. 49. FAIL
  50. 50. SUCCESS
  51. 51. GRINDER HTTP Plugin Apache HttpClient + 호환성 Grinder Http Plugin + 더 많은 그래프(Response Time 등)
  52. 52. GRINDER HTTP Plugin HTTPRequest 객체는 GET/POST/PUT/DELETE 메소드를 가지고 있음
  53. 53. GRINDER HTTP Plugin JSON 데이터를 POST로 보내기 http://grinder.sourceforge.net/g3/scriptjavadoc/net/grinder/plugin/http/HTTPRequest.html
  54. 54. 리소스 읽기
  55. 55. 리소스 읽기 / Groovy Maven
  56. 56. 라이브러리 사용 (Jython / Groovy) 라이브러리 사용 (Groovy Maven Project) pom.xml 에 의존성 추가로 작업 끝!
  57. 57. 대규모 응답 처리하기
  58. 58. 다수의 테스트 가중치 부여 실행
  59. 59. 쓰레드마다 다른 짓 하게 하기 또는 GrinderUtils.threadUniqId (groovy 전용)
  60. 60. JSON 파싱하기
  61. 61. XML 파싱하기
  62. 62. LOG LEVEL
  63. 63. nGrinder Scripting Samples
  64. 64. DB TEST
  65. 65. DB TEST - iBatis
  66. 66. DB TEST - iBatis
  67. 67. Zookeeper 테스트
  68. 68. Zookeeper 테스트 - pom.xml
  69. 69. Zookeeper 테스트 – set up ZK 클라이언트 셋업
  70. 70. Zookeeper 테스트 – 테스트 Read/Write 레코딩 쓰레드별로 다른 노드 접근
  71. 71. Zookeeper 테스트 - 결과
  72. 72. SocketIO 테스트 ASYNC???
  73. 73. SocketIO 테스트
  74. 74. nGrinder 그외에도..
  75. 75. 사용자 등록이 귀찮아요.. Self Sign Up 또는 SSO 플러그인!! 과도한 트래픽이 걱정돼요.. network overflow plugin 프로세스 너무 많이 띄우면 에이전트가 행걸리지 않을까요? Die Hard Plugin (내장)
  76. 76. JVM의 특화된 모니터링(GC/ PermGen / 쓰레드) 않되나요? 제니퍼 추천.. 그러나 없다면.. JVM Monitor Plugin 게임회사인데.. 우리 자체 프로토콜로 구현된 C++네트웍 라이브러리가 있거든요.. How to bind native lib 어뷰징이 걱정되요.. 시큐리티 모드
  77. 77. nGrinder 감사합니다~~
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×