tomcat-7 tuning
톰캣 컴포넌트 튜닝
- 
    스레드 튜닝 
- 
    포트 커스터마이즈 
- 
    JVM 튜닝 등 
톰캣 커넥터의 종류
- 커넥터?
요청을 수락하고 응답을 리턴하는 교차점
- 
    HTTP 커넥터 - 
        HTTP 프로토콜을 기반으로 하는 HTTP 커넥터 
- 
        HTTP/1.1 프로토콜만 지원 
- 
        독립형 웹 서버로 동작할 수 있다. ( iis / apache 역할도 한다는 얘기임 ) 
- 
        JSP/Servlet 호스트 기능도 제공 
 
- 
        
- 
    AJP 커넥터 - 
        AJP ( 아파치 JServ 프로토콜 ) 와 AJP를 통한 웹 서버 통신을 기반으로 한다. 
- 
        자바 서블릿 컨테이너를 인터넷에 노출하고 싶지 않을때 AJP 커넥터를 사용 
- 
        다른 프론트엔드 서버를 사용한다는 얘기임.. ( iis / apache 등) 
- 
        AJP 구현체로 mod_jk, mod_proxy 등이 있음. 
 
- 
        
- 
    APR (AJP/HTTP) 커넥터 - 
        APR : Apache Portable Runtime 
- 
        확장성, 성능, 다른 웹 서버와의 협력 작업 상황에서 활용 
- 
        Open SSL, 공유 메모리, 유닉스 소켓 등 부가 기능을 제공 
 
- 
        
톰캣 7 스레드 최적화
- 스레드 풀
톰캣 웹 서버가 수락할 수 있는 연결 수 또는 서버가 수락할 수 있는 요청 수
( 톰캣은 요청을 받으면 스레드를 생성한다, 이때 생성되는 스레드를 풀로 관리 한다는 얘기임 )
톰캣의 스레드 풀 종류
- 
    **공유 스레드 풀 ( 공유된 실행자 )** - 
        많은 커넥터가 공유하는 풀을 말함 
- 
        예를 들어, 네개의 커넥터가 있을 경우, 모든 커넥터에서 같은 스레드 풀을 공유 
- 
        커넥터 설명은 위에… 
- 
        **설정방법** 
- 
        **server.xml **에 **services **섹션에 정의 
- 
        executor 정의 
 * <Executor name=“tomcatThreadPool (임의의 값)” namePrefix=“catalina-exec-“ maxThreads=“150” minSpareThread=“4” />- connector 정의
 * <Connector executor=“tomcatThreadPool (정의한 executor 값)” port=“8080” protocal=“HTTP/1.1” connectionTimeout=“20000” redirectPort=“8443” />
- 
        
- 
    **전용 스레드 풀** - 
        공유 스레드 풀과 반대로 특정 connector 전용으로 할당하는 스레드 풀 
- 
        **설정방법** - 
            **server.xml** 에 connector 섹션에 정의 - <Connector port=“8080” protocal=“HTTP/1.1” SSLEnabled=“true” maxThreads=“150” schema=“https” secure=“true” clientAuth=“false” sslProtocol =“TLS” />
 
 
- 
            
 
- 
        
**maxThreads **
서버가 수락할 수 있는 최대 요청 수 정의
환경에 따라 최적의 Thread 수를 설정해야한다.
- 
    thread 수를 늘리고 cpu 사용량을 확인한다. 
- 
    cpu 사용량이 높으면 thread 값을 낮추고, 보통이면 더 많은 thread 를 설정할 수 있다. 
masKeepAlive
동시에 대기할 수 있는 (종료되지 않고) TCP 연결 수 를 정의 한다.
기본값은 1, 즉 비활성화
- 
    maxKeepAlive = 1 이면, - 
        톰캣에서 SSL 터미네이션을 수행하지 않는다. 
- 
        부하 균형 기법을 사용한다. 
- 
        동시에 더 많은 사용자를 수용한다. 
 
- 
        
- 
    maxKeepAlive > 1 이면, - 
        톰캣에서 SSL 터미네이션을 수행한다. 
- 
        적은 동시 사용자를 수용한다. 
 
- 
        
JVM 튜닝
- 
    톰캣 프로세스 PID 확인 - 
        ps -ef grep java 
 
- 
        
- 
    jmap을 통한 톰캣 인스턴스의 메모리 확인 - 옵션
 
| * -dump | * 자바 합을 hprof 바이너리 형식으로 덤프 | 
| * -finalizer info | * 소멸(finalization) 을 기다리는 오브젝트 정보 출력 | 
| * -heap | * 힙 요약 정보 출력 | 
| * -histo | * 힙 히스토그램 출력 | 
| * -permstat | * 자바 힙의 영구 세대 (permanent generation)를 클래스 로더 통계로 출력 | 
* 
- 
    http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html 
- 
    문법 - 
        32 bit - jmap -heap 
 
- jmap -heap 
- 
        64 bit - jmap -J-d64 -heap 
 
- jmap -J-d64 -heap 
- 
        결과 해석 방법은 인터넷으로… 
 
- 
        
- [정리] 정보이론: 정보량 (Information), 엔트로피 ( Entropy ), 쿨백 라이블러 발산 (KL-Divergence), 크로스 엔트로피 ( Cross - Entropy ), maximum likelihood
- [발번역] Bag of words (BoW) - Natural Language processing
- Installing Anaconda and Jupyter notebook
- 다시 보는 Java : FileChannel transferTo()
- 다시 보는 Java : NIO Channel
- 다시 보는 Java : Socket-Direct-Protocol
- 다시 보는 Java
- Streamsets DataCollector Source Build
- Apache Helix Core Concepts
- Introduce Flipkart Aesop
 
  




