SlideShare una empresa de Scribd logo
1 de 42
Content


오픈소스/무료 툴을 활용한                               1. 동기 - 부하/성능테스트
                                             2. 성능/부하 툴 소개

부하/성능 테스트 사례소개                               3. 설치 가이드
                                             4. 활용 가이드
                                             5. 병목 발견 및 조치
                                             6. 여러가지 함정들
                                             7. 활용 팁
2013. 3. 16



소         속 K   S       U   G
발    표    자 임       성       현
발    표    자 이       경       환




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
발표자

 * 임성현
     - 스펙트라에서 근무중
       (차세대 제품개발/Quality Eng.)
     - 전 삼성SDS 품질 툴 개발 및 지원
     - 자바개발 14년차
     - 전자계산조직응용 기술사
     - IT멘토링(한이음/WoC등)
     - 정보화역기능 명예강사(소년원)


                                             * 이경환
                                              - 스펙트라에서 근무중
                                              - 자바개발 5년차
                                              - 차세대 제품개발
                                              - 개발표준 / Continuous Integration 자동화
                                              - 스프링 기반 단위/ 통합/ 성능 테스트 담당




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
1. 동기

 오픈소스/무료 성능 툴이 필요한 이유
  - 좀 더 빠른 시점에 => 개발 시점에

  - 개발자가 직접 => 자신이 작성한 소스를

  - 부담 없이 => 비용 부담 없이, 설치 부담 없이(설치가 정말 쉽다!)

  - 성능을 고려한 실험을 할 수 있도록 => 이렇게 하면 더 빨라질까?



 아래의 질문을 해결해봅시다!
   - Filter를 사용하면 얼마나 성능이 떨어질까요?

   - 커넥션 풀 세팅을 변경하면 얼마나 빨라지나요?

   - 보안 라이브러리를 교체하면 얼마나 느려지나요?

   - 데이터가 100만 건이 넘으면 조회가 느리다는데 어디가 문제일까요?


개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
2. 성능/부하 툴 소개

 부하 툴 : nGrinder(http://www.nhnopensource.org/ngrinder/)




 자세한 설명은
 http://prezi.com/sv1xtz75ybaq/ngrinder/
 http://ngrinder.642.n7.nabble.com/ngrinder-user-kr-f113.html

개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
2. 성능/부하 툴 소개

                                             nGrinder 구성
                                             - nGrinder controller
                                             - Agent




                                             이미지 출처:
                                             http://www.cubrid.org
                                             /wiki_ngrinder/entry/g
                                             eneral-architecture



개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
2. 성능/부하 툴 소개

                                             성능 툴:
                                             AppDynamics lite
                                             http://www.appdynamics.c
                                             om/


                                             참고 사이트
                                             http://litedocs.appdynami
                                             cs.com/display/ADLite/Ge
                                             t+Started+With+AppDyna
                                             mics+Lite+for+Java




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
2. 성능/부하 툴 소개

                                             AppDynamics
                                             지원 사양




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
2. 성능/부하 툴 소개

                                             성능 툴: New Relic
                                             http://newrelic.com/

                                             참고 사이트
                                             https://newrelic.com/
                                             docs/help




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
2. 성능/부하 툴 소개

                                             New Relic 지원사양




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
2. 성능/부하 툴 소개

                                             성능 툴: VisualVM
                                             http://visualvm.java.net

                                             참고 사이트
                                             http://visualvm.java.net/ko_K
                                             R/gettingstarted.html




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
2. 성능/부하 툴 소개

                                             성능 툴: Eclipse Memory
                                             Analyzer
                                             http://www.eclipse.org/mat/d
                                             ownloads.php




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드 - overview
                                             System Under Test




                       Agent
                        Agent
                         Script

                                                                   모니터링
      시나리오

                                                      Egov…..
                                                      WAS 서버
                         Agent
                          Agent
                           Agent




                                                        DB 서버
                                                        Oracle




      부하 테스트(Stress test)                                성능 모니터링

개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드

  1) nGrinder : http://sourceforge.net/projects/ngrinder/files/
       참조: http://junoyoon.tistory.com/entry/nGrinder-
       %EC%84%A4%EC%B9%98%EB%B0%A9%EB%B2%95
  2) AppDynamics : http://www.appdynamics.com/curious-about-
      pricing
  3) New Relic : 회원가입 후 License Key, Agent 다운로드




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드 - nGrinder




                                             실행 후




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드 - AppDynamics




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드 - New Relic




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드 - 테스트 대상 환경 구성

 1. Windows 7 / Tomcat 6.0.36 / Oracle 11g XE / Java 1.6.0_35
 2. 테스트 대상 web application 구성
     전자정부프레임워크 의사소통관리 2.0
     http://www.egovframe.org/cop/bbs/selectBoardArticle.do?nttId=444&bbsId=BBSMSTR
     _000000000121&menu=2&submenu=3 (oe1.war로 변환 후 구동)




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드 - 테스트 대상 환경 구성

     http://sleeplessinslc.blogspot.kr/2012/02/spring-security-stateless-cookie-based.html




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드 - Port 정리

 Port 정리
 <수정 필요>
 1. 테스트 대상 서버(SUT) /conf/web.xml :
     shutdown port=8885
     service port=8888
     ajp port=8889
 2. nGrinder controller /conf/web.xml :
     shutdown port=18005
     service port=18080
     ajp port=18009

 <수정 안함>
 3. nGrinder Agent user/.nGrinder_agent/agent.conf
    controller port=16001
 4. AppDynamics viewer
    adlite-view port=8990
 5. The Grinder
    TCPProxy port=8001
 6. SpringSecurity Example
    jetty port=8080


개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드 - 모니터링/ TCPProxy 준비

 1. 모니터링
    _DEV_/SUT/apache-tomcat-6.0.36/bin/catalina.bat 수정
   javaagent 옵션 활용




 2. 레코딩
    _DEV_/tcpproxy.bat 파일 생성




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
3. 설치 가이드 - egov 셈플 수정


 동시접속자 제한을 제거
 - context-security.xml 파일 128라인 주석화




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
4. 활용 가이드

 < 다음사항을 알아보겠습니다. >

 1) nGrinder Basic - JYTHON!!!

 2) 저장된 스크립트 구동

 3) Record & Play (jython의 장벽을 넘을 수 있는 막강 도구)

 4) Session 처리

 5) POST 방식

 6) JSON 처리

 7) 시퀀스

 8) Doc 생성




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
4. 활용 가이드

 1) nGrinder Basic - JYTHON!!!(java만 알면 까막눈)




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
4. 활용 가이드

 2) 저장된 스크립트 구동
 3) Record & Play(jython의 장벽을 넘을 수 있는 막강 도구)
  - tcpproxy.bat 수행




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
4. 활용 가이드

  - 브라우저 proxy 설정




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
4. 활용 가이드

 4) Session 처리 – nGrinder에서 기본 제공
 5) POST 방식




 6) JSON 처리 – 스크립트 만들 때 라이브러리/리소스 폴더 생성 후 json라이브러리 업로드




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
4. 활용 가이드

 7) 시퀀스 – 동일한 USER ID를 막는다면? -> python의 글로벌 변수 활용
 8) Doc 생성 – groc 활용(http://blog.outsider.ne.kr/907)




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치

 <다음 사항을 알아보겠습니다>

 1. 성능 측정과 함께 모니터링 해야 할 것

 2. 성능 측정 후에 모니터링 해야 할 것

 3. WAS가 죽거나 멈췄을 때 확인해야 할 것




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치

 * 성능 측정과 함께 모니터링 해야 할 것
 1) WAS 성능 모니터링




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치

 * 성능 측정과 함께 모니터링 해야 할 것
 2) WAS의 thread 모니터링. (부하가 잘 들어가고 있는지 알 수 있습니다.)




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치

 * 성능 측정과 함께 모니터링 해야 할 것
 3) SUT(대상시스템) 과 연계시스템 (DB, WebService 등)의 resource 확인
   CPU , MEMORY, DISK, NETWORK




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치

 * 성능 측정과 함께 모니터링 해야 할 것
 4) visualvm의 sampling 플러그인을 사용하여 java method별 병목 파악.




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치

 * 성능 측정과 함께 모니터링 해야 할 것
   snapshot을 보면 세부적인 callstack과 시간을 볼 수 있습니다.




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치

 2. 성능 측정 후에 모니터링 해야 할 것

 1) Test 데이터 확인.

   등록건수/조회건수 등에 대해서 정확하게 변경되었는지 확인.

   동시접속 제한 등으로 미실행건이 있는지 확인

    => Logic이 수행되지 않았기 때문에 TPS가 과다 산정



 2) Error 확인

   에러 로그를 확인, 에러를 전부 제거한 뒤에 다시 부하테스트 시도




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치

 3. WAS가 죽거나 멈췄을 때 확인해야 할 것
 1) SYSTEM log를 확인(WAS가 어떤이유로 죽었는지.)

 2) visualvm으로 memory, gc 를 확인.
  (GC가 짧은간격 호출되고 호출 이후에도 메모리가

      내려가지 않고 높다면 메모리가 부족한것.)

 3) memory leak은 visualvm으로

    heap dump를 받아서 확인한다.
   -Xmx 가 너무 적게 잡으면 발생

   -Xmx 가 너무 크면 시스템이 리소스를 독점하고,

    full GC에 많은 시간이 걸려 오히려 역효과




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
5. 병목발견 및 조치

 3. WAS가 죽거나 멈췄을 때 확인해야 할 것
   Memory Analyzer(MAT)




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
6. 여러가지 함정들
 1. [nGrinder]windows xp에서 agent를 설치하는 사용자의 함정
  Default : C:Docment and Settingsuser.ngrinder_agent 경로에 " "가 들어가면 실행시 에러 발생.
  해결 방안:
     AGENT 사용시           - NGRINDER_AGENT_HOME=c:ngrinderagent_home
     CONTROLLER 사용시 - NGRINDER_HOME=c:ngrindercontroller_home
     TOMCAT 사용시           - CATALINA_HOME=c:ngrindercontroller



 2. [AppDynamics]
 구동되면서 OOM permgen space exception 발생할 수 있음.
  해결 방안:
    -XX:MaxPermSize=128m permgen영역을 조금 더 여유 있게 설정


 3. [SUT]dbpool이 함정.
  DB pool은 느리지 않습니다. DB에서 처리하는 시간이 늘어나면서 pool이 부족해 질 수 있습니다.
  DB pool 관련 method의 처리시간이 길어지고 pool에 반환하지 못하면서 대기시간이 길어집니다.
  DB pool 설정을 무작정 늘리는 것은 좋지 않다.
  아래의 설정은 DB pool 역할을 못한다.

   <property name="initialSize" value="0"/>
   <property name="maxActive" value="8"/>
   <property name="maxIdle" value="0"/>  DB Pool 을 사용하지 않는 것과 같다.



개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
7. 활용 팁
 1. [SUT]실행 에러를 없애고 테스트 수행할 것
   - error있는 소스가 tps나 응답시간이 외곡될 수 있다. 에러처리가 우선!!(TPS/응답시간만 보고 성능이 개선되었다고 착각)

   - grinder.statistics.forLastTest.setSuccess(False) 처리시 많은 에러가 나면 테스트가 중간 종료됨



 2. [nGrinder]시나리오는 심플하게
   - 스크립트 만들기도 어렵고, 에러 수정하기도 어렵다.

   - 시나리오가 복잡하면 평균 TPS를 통해 어디가 병목인지 확인이 어렵다.



 3. [nGrinder] 실행 우선, 서서히 다듬기.
   - 먼저 잘 실행되는 스크립트를 만들고 모니터링 하면서 개선한다.



 4. [SUT]시스템의 이해가 필요.
   - 로그인 중복 방지 경우(user+timestamp로 로그를 남기는 경우 동시에 로그인하면 키중복 에러)

   - 동일 사용자의 경우 조회수가 변동되지 않는 경우

   - spring security의 session, 동시사용자 제한등을 풀어야 제대로 부하를 주는 테스트를 할 수 있다.



 5. [전략]테스트 구동 서버, agent, 모니터링 서버 확보
   - 동일 서버에서 구동시 과도 부하 발생

개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
7. 활용 팁
 6. [전략]DB를 사용하는 어플리케이션이라면 DB튜닝과 함께 병행 준비
   - 성능저하 포인트는 결국 DB에서 만나게 된다.



 7. [nGrinder]script 검증과 부하테스트 환경의 차이 감안(Agent의 127.0.0.1 상황)
   - SUT에 대한 부하는 nGrinder Agent에서 주기 때문에 원격서버에 설치된 경우 방화벽 설정에 주의

   - script의 검증은 nGrinder controller에서 수행하고 실제 부하 테스트 시에는 nGrinder Agent에서 접근함.



 8. [nGrinder]Script Gallery를 꼭 구경하자.
  - nGrinder의 모체인 The Grinder가 어떤 기능을 제공하는지 파악 가능 http://grinder.sourceforge.net/g3/script-gallery.html#form.py



 9. [전략]적정 시간 이상 테스트를 수행한 뒤 측정
  - 30분이상 부하를 준뒤 성능을 수치를 측정하는것이 좋습니다.

  - 따라서, 시간이 많이 소요되는 테스트!!(야근주의)



 10. [SUT]동일한 환경에 기술요소를 다르게 하여 성능개선 포인트 확보 가능
  - tomcat의 connector 를 APR로 바꿨을때

  - apache와 nginex의 비교.

  - 커넥션 풀을 Apache DBCP를 boneCP로 바꿨을때.


개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
7. 활용 팁

 11. [전략]오픈소스 개발자에게 감사를 표시하자
   - http://ngrinder.642.n7.nabble.com/ngrinder-user-kr-f113.html




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
감사합니다.

     임성현 : sunghyun.lim@gmail.com
     이경환 : khlee03@gmail.com




개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트

Más contenido relacionado

La actualidad más candente

오픈소스 성능 최적화 보고서 ch07. Infinispan
오픈소스 성능 최적화 보고서 ch07. Infinispan오픈소스 성능 최적화 보고서 ch07. Infinispan
오픈소스 성능 최적화 보고서 ch07. Infinispan
HyeonSeok Choi
 
Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2
Tommy Lee
 
대용량아키텍처와성능튜닝 8장성능엔지니어링정의와범위
대용량아키텍처와성능튜닝 8장성능엔지니어링정의와범위대용량아키텍처와성능튜닝 8장성능엔지니어링정의와범위
대용량아키텍처와성능튜닝 8장성능엔지니어링정의와범위
HyeonSeok Choi
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
지수 윤
 

La actualidad más candente (20)

Nginx Testing in NAVER
Nginx Testing in NAVERNginx Testing in NAVER
Nginx Testing in NAVER
 
Jmeter
JmeterJmeter
Jmeter
 
JMeter
JMeterJMeter
JMeter
 
솔루션 구축 사례를 통해 본 SW아키텍처
솔루션 구축 사례를 통해 본 SW아키텍처솔루션 구축 사례를 통해 본 SW아키텍처
솔루션 구축 사례를 통해 본 SW아키텍처
 
Performance test
Performance testPerformance test
Performance test
 
오픈소스 성능 최적화 보고서 ch07. Infinispan
오픈소스 성능 최적화 보고서 ch07. Infinispan오픈소스 성능 최적화 보고서 ch07. Infinispan
오픈소스 성능 최적화 보고서 ch07. Infinispan
 
Apache JMeter로 웹 성능 테스트 방법
Apache JMeter로 웹 성능 테스트 방법Apache JMeter로 웹 성능 테스트 방법
Apache JMeter로 웹 성능 테스트 방법
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
 
Ahea Team Spring batch
Ahea Team Spring batchAhea Team Spring batch
Ahea Team Spring batch
 
지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합
 
DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법
 
대용량아키텍처와성능튜닝 8장성능엔지니어링정의와범위
대용량아키텍처와성능튜닝 8장성능엔지니어링정의와범위대용량아키텍처와성능튜닝 8장성능엔지니어링정의와범위
대용량아키텍처와성능튜닝 8장성능엔지니어링정의와범위
 
SonarQube 로 Unity 프로젝트 관리
SonarQube 로 Unity 프로젝트 관리SonarQube 로 Unity 프로젝트 관리
SonarQube 로 Unity 프로젝트 관리
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
 
Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안
 
필요해서 하는 개발 자동화
필요해서 하는 개발 자동화필요해서 하는 개발 자동화
필요해서 하는 개발 자동화
 

Similar a 공감세미나 성능테스트

Build Team Foundation Architecture
Build Team Foundation ArchitectureBuild Team Foundation Architecture
Build Team Foundation Architecture
준일 엄
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
Jinuk Kim
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
효원 강
 
제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발
Terry Cho
 

Similar a 공감세미나 성능테스트 (20)

애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구
 
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing tool
 
TestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing toolTestExplorer 소개 - Android application GUI testing tool
TestExplorer 소개 - Android application GUI testing tool
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
Build Team Foundation Architecture
Build Team Foundation ArchitectureBuild Team Foundation Architecture
Build Team Foundation Architecture
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Source
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례UI 정적분석툴 소개와 활용사례
UI 정적분석툴 소개와 활용사례
 
모바일 자동화 솔루션 Touch Test 소개
모바일 자동화 솔루션 Touch Test 소개모바일 자동화 솔루션 Touch Test 소개
모바일 자동화 솔루션 Touch Test 소개
 
AWS Innovate: Mobile App testing with AWS Device Farm- Kevin Kim
AWS Innovate: Mobile App testing with AWS Device Farm- Kevin KimAWS Innovate: Mobile App testing with AWS Device Farm- Kevin Kim
AWS Innovate: Mobile App testing with AWS Device Farm- Kevin Kim
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
 
제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정
 

공감세미나 성능테스트

  • 1. Content 오픈소스/무료 툴을 활용한 1. 동기 - 부하/성능테스트 2. 성능/부하 툴 소개 부하/성능 테스트 사례소개 3. 설치 가이드 4. 활용 가이드 5. 병목 발견 및 조치 6. 여러가지 함정들 7. 활용 팁 2013. 3. 16 소 속 K S U G 발 표 자 임 성 현 발 표 자 이 경 환 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 2. 발표자 * 임성현 - 스펙트라에서 근무중 (차세대 제품개발/Quality Eng.) - 전 삼성SDS 품질 툴 개발 및 지원 - 자바개발 14년차 - 전자계산조직응용 기술사 - IT멘토링(한이음/WoC등) - 정보화역기능 명예강사(소년원) * 이경환 - 스펙트라에서 근무중 - 자바개발 5년차 - 차세대 제품개발 - 개발표준 / Continuous Integration 자동화 - 스프링 기반 단위/ 통합/ 성능 테스트 담당 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 3. 1. 동기 오픈소스/무료 성능 툴이 필요한 이유 - 좀 더 빠른 시점에 => 개발 시점에 - 개발자가 직접 => 자신이 작성한 소스를 - 부담 없이 => 비용 부담 없이, 설치 부담 없이(설치가 정말 쉽다!) - 성능을 고려한 실험을 할 수 있도록 => 이렇게 하면 더 빨라질까? 아래의 질문을 해결해봅시다! - Filter를 사용하면 얼마나 성능이 떨어질까요? - 커넥션 풀 세팅을 변경하면 얼마나 빨라지나요? - 보안 라이브러리를 교체하면 얼마나 느려지나요? - 데이터가 100만 건이 넘으면 조회가 느리다는데 어디가 문제일까요? 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 4. 2. 성능/부하 툴 소개 부하 툴 : nGrinder(http://www.nhnopensource.org/ngrinder/) 자세한 설명은 http://prezi.com/sv1xtz75ybaq/ngrinder/ http://ngrinder.642.n7.nabble.com/ngrinder-user-kr-f113.html 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 5. 2. 성능/부하 툴 소개 nGrinder 구성 - nGrinder controller - Agent 이미지 출처: http://www.cubrid.org /wiki_ngrinder/entry/g eneral-architecture 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 6. 2. 성능/부하 툴 소개 성능 툴: AppDynamics lite http://www.appdynamics.c om/ 참고 사이트 http://litedocs.appdynami cs.com/display/ADLite/Ge t+Started+With+AppDyna mics+Lite+for+Java 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 7. 2. 성능/부하 툴 소개 AppDynamics 지원 사양 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 8. 2. 성능/부하 툴 소개 성능 툴: New Relic http://newrelic.com/ 참고 사이트 https://newrelic.com/ docs/help 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 9. 2. 성능/부하 툴 소개 New Relic 지원사양 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 10. 2. 성능/부하 툴 소개 성능 툴: VisualVM http://visualvm.java.net 참고 사이트 http://visualvm.java.net/ko_K R/gettingstarted.html 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 11. 2. 성능/부하 툴 소개 성능 툴: Eclipse Memory Analyzer http://www.eclipse.org/mat/d ownloads.php 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 12. 3. 설치 가이드 - overview System Under Test Agent Agent Script 모니터링 시나리오 Egov….. WAS 서버 Agent Agent Agent DB 서버 Oracle 부하 테스트(Stress test) 성능 모니터링 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 13. 3. 설치 가이드 1) nGrinder : http://sourceforge.net/projects/ngrinder/files/ 참조: http://junoyoon.tistory.com/entry/nGrinder- %EC%84%A4%EC%B9%98%EB%B0%A9%EB%B2%95 2) AppDynamics : http://www.appdynamics.com/curious-about- pricing 3) New Relic : 회원가입 후 License Key, Agent 다운로드 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 14. 3. 설치 가이드 - nGrinder 실행 후 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 15. 3. 설치 가이드 - AppDynamics 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 16. 3. 설치 가이드 - New Relic 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 17. 3. 설치 가이드 - 테스트 대상 환경 구성 1. Windows 7 / Tomcat 6.0.36 / Oracle 11g XE / Java 1.6.0_35 2. 테스트 대상 web application 구성 전자정부프레임워크 의사소통관리 2.0 http://www.egovframe.org/cop/bbs/selectBoardArticle.do?nttId=444&bbsId=BBSMSTR _000000000121&menu=2&submenu=3 (oe1.war로 변환 후 구동) 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 18. 3. 설치 가이드 - 테스트 대상 환경 구성 http://sleeplessinslc.blogspot.kr/2012/02/spring-security-stateless-cookie-based.html 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 19. 3. 설치 가이드 - Port 정리 Port 정리 <수정 필요> 1. 테스트 대상 서버(SUT) /conf/web.xml : shutdown port=8885 service port=8888 ajp port=8889 2. nGrinder controller /conf/web.xml : shutdown port=18005 service port=18080 ajp port=18009 <수정 안함> 3. nGrinder Agent user/.nGrinder_agent/agent.conf controller port=16001 4. AppDynamics viewer adlite-view port=8990 5. The Grinder TCPProxy port=8001 6. SpringSecurity Example jetty port=8080 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 20. 3. 설치 가이드 - 모니터링/ TCPProxy 준비 1. 모니터링 _DEV_/SUT/apache-tomcat-6.0.36/bin/catalina.bat 수정 javaagent 옵션 활용 2. 레코딩 _DEV_/tcpproxy.bat 파일 생성 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 21. 3. 설치 가이드 - egov 셈플 수정 동시접속자 제한을 제거 - context-security.xml 파일 128라인 주석화 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 22. 4. 활용 가이드 < 다음사항을 알아보겠습니다. > 1) nGrinder Basic - JYTHON!!! 2) 저장된 스크립트 구동 3) Record & Play (jython의 장벽을 넘을 수 있는 막강 도구) 4) Session 처리 5) POST 방식 6) JSON 처리 7) 시퀀스 8) Doc 생성 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 23. 4. 활용 가이드 1) nGrinder Basic - JYTHON!!!(java만 알면 까막눈) 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 24. 4. 활용 가이드 2) 저장된 스크립트 구동 3) Record & Play(jython의 장벽을 넘을 수 있는 막강 도구) - tcpproxy.bat 수행 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 25. 4. 활용 가이드 - 브라우저 proxy 설정 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 26. 4. 활용 가이드 4) Session 처리 – nGrinder에서 기본 제공 5) POST 방식 6) JSON 처리 – 스크립트 만들 때 라이브러리/리소스 폴더 생성 후 json라이브러리 업로드 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 27. 4. 활용 가이드 7) 시퀀스 – 동일한 USER ID를 막는다면? -> python의 글로벌 변수 활용 8) Doc 생성 – groc 활용(http://blog.outsider.ne.kr/907) 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 28. 5. 병목발견 및 조치 <다음 사항을 알아보겠습니다> 1. 성능 측정과 함께 모니터링 해야 할 것 2. 성능 측정 후에 모니터링 해야 할 것 3. WAS가 죽거나 멈췄을 때 확인해야 할 것 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 29. 5. 병목발견 및 조치 * 성능 측정과 함께 모니터링 해야 할 것 1) WAS 성능 모니터링 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 30. 5. 병목발견 및 조치 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 31. 5. 병목발견 및 조치 * 성능 측정과 함께 모니터링 해야 할 것 2) WAS의 thread 모니터링. (부하가 잘 들어가고 있는지 알 수 있습니다.) 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 32. 5. 병목발견 및 조치 * 성능 측정과 함께 모니터링 해야 할 것 3) SUT(대상시스템) 과 연계시스템 (DB, WebService 등)의 resource 확인 CPU , MEMORY, DISK, NETWORK 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 33. 5. 병목발견 및 조치 * 성능 측정과 함께 모니터링 해야 할 것 4) visualvm의 sampling 플러그인을 사용하여 java method별 병목 파악. 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 34. 5. 병목발견 및 조치 * 성능 측정과 함께 모니터링 해야 할 것 snapshot을 보면 세부적인 callstack과 시간을 볼 수 있습니다. 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 35. 5. 병목발견 및 조치 2. 성능 측정 후에 모니터링 해야 할 것 1) Test 데이터 확인. 등록건수/조회건수 등에 대해서 정확하게 변경되었는지 확인. 동시접속 제한 등으로 미실행건이 있는지 확인 => Logic이 수행되지 않았기 때문에 TPS가 과다 산정 2) Error 확인 에러 로그를 확인, 에러를 전부 제거한 뒤에 다시 부하테스트 시도 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 36. 5. 병목발견 및 조치 3. WAS가 죽거나 멈췄을 때 확인해야 할 것 1) SYSTEM log를 확인(WAS가 어떤이유로 죽었는지.) 2) visualvm으로 memory, gc 를 확인. (GC가 짧은간격 호출되고 호출 이후에도 메모리가 내려가지 않고 높다면 메모리가 부족한것.) 3) memory leak은 visualvm으로 heap dump를 받아서 확인한다. -Xmx 가 너무 적게 잡으면 발생 -Xmx 가 너무 크면 시스템이 리소스를 독점하고, full GC에 많은 시간이 걸려 오히려 역효과 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 37. 5. 병목발견 및 조치 3. WAS가 죽거나 멈췄을 때 확인해야 할 것 Memory Analyzer(MAT) 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 38. 6. 여러가지 함정들 1. [nGrinder]windows xp에서 agent를 설치하는 사용자의 함정 Default : C:Docment and Settingsuser.ngrinder_agent 경로에 " "가 들어가면 실행시 에러 발생. 해결 방안: AGENT 사용시 - NGRINDER_AGENT_HOME=c:ngrinderagent_home CONTROLLER 사용시 - NGRINDER_HOME=c:ngrindercontroller_home TOMCAT 사용시 - CATALINA_HOME=c:ngrindercontroller 2. [AppDynamics] 구동되면서 OOM permgen space exception 발생할 수 있음. 해결 방안: -XX:MaxPermSize=128m permgen영역을 조금 더 여유 있게 설정 3. [SUT]dbpool이 함정. DB pool은 느리지 않습니다. DB에서 처리하는 시간이 늘어나면서 pool이 부족해 질 수 있습니다. DB pool 관련 method의 처리시간이 길어지고 pool에 반환하지 못하면서 대기시간이 길어집니다. DB pool 설정을 무작정 늘리는 것은 좋지 않다. 아래의 설정은 DB pool 역할을 못한다. <property name="initialSize" value="0"/> <property name="maxActive" value="8"/> <property name="maxIdle" value="0"/>  DB Pool 을 사용하지 않는 것과 같다. 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 39. 7. 활용 팁 1. [SUT]실행 에러를 없애고 테스트 수행할 것 - error있는 소스가 tps나 응답시간이 외곡될 수 있다. 에러처리가 우선!!(TPS/응답시간만 보고 성능이 개선되었다고 착각) - grinder.statistics.forLastTest.setSuccess(False) 처리시 많은 에러가 나면 테스트가 중간 종료됨 2. [nGrinder]시나리오는 심플하게 - 스크립트 만들기도 어렵고, 에러 수정하기도 어렵다. - 시나리오가 복잡하면 평균 TPS를 통해 어디가 병목인지 확인이 어렵다. 3. [nGrinder] 실행 우선, 서서히 다듬기. - 먼저 잘 실행되는 스크립트를 만들고 모니터링 하면서 개선한다. 4. [SUT]시스템의 이해가 필요. - 로그인 중복 방지 경우(user+timestamp로 로그를 남기는 경우 동시에 로그인하면 키중복 에러) - 동일 사용자의 경우 조회수가 변동되지 않는 경우 - spring security의 session, 동시사용자 제한등을 풀어야 제대로 부하를 주는 테스트를 할 수 있다. 5. [전략]테스트 구동 서버, agent, 모니터링 서버 확보 - 동일 서버에서 구동시 과도 부하 발생 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 40. 7. 활용 팁 6. [전략]DB를 사용하는 어플리케이션이라면 DB튜닝과 함께 병행 준비 - 성능저하 포인트는 결국 DB에서 만나게 된다. 7. [nGrinder]script 검증과 부하테스트 환경의 차이 감안(Agent의 127.0.0.1 상황) - SUT에 대한 부하는 nGrinder Agent에서 주기 때문에 원격서버에 설치된 경우 방화벽 설정에 주의 - script의 검증은 nGrinder controller에서 수행하고 실제 부하 테스트 시에는 nGrinder Agent에서 접근함. 8. [nGrinder]Script Gallery를 꼭 구경하자. - nGrinder의 모체인 The Grinder가 어떤 기능을 제공하는지 파악 가능 http://grinder.sourceforge.net/g3/script-gallery.html#form.py 9. [전략]적정 시간 이상 테스트를 수행한 뒤 측정 - 30분이상 부하를 준뒤 성능을 수치를 측정하는것이 좋습니다. - 따라서, 시간이 많이 소요되는 테스트!!(야근주의) 10. [SUT]동일한 환경에 기술요소를 다르게 하여 성능개선 포인트 확보 가능 - tomcat의 connector 를 APR로 바꿨을때 - apache와 nginex의 비교. - 커넥션 풀을 Apache DBCP를 boneCP로 바꿨을때. 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 41. 7. 활용 팁 11. [전략]오픈소스 개발자에게 감사를 표시하자 - http://ngrinder.642.n7.nabble.com/ngrinder-user-kr-f113.html 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트
  • 42. 감사합니다. 임성현 : sunghyun.lim@gmail.com 이경환 : khlee03@gmail.com 개발자를 위한 공감세미나 11회-오픈 소스/무료 툴을 활용한 성능/부하테스트