• Tomcat 튜닝. Hang 현상.

    첫번째 참고
    tomcat 튜닝 – outofmemory
    http://www.javastudy.co.kr/javastudy/new_bbs/qna_view.jsp?bbs_name=lecbasicbbs&theid=364&pageNum=1

    이것도 참고.
    http://kr.sun.com/developers/tech_docs/wireless_web06/wireless02.html

    * Sun Microsystyems의 자바 HotSpot VM은 힙을 세 개의 영역으로 나누고 있다.
    힙의 세 영역은 다음과 같다:
    1) Permanent space: JVM 클래스와 메소드 개체를 위해 쓰인다.
    2) Old object space: 만들어진지 좀 된 개체들을 위해 쓰인다.
    3) New(young) object space: 새로 생성된 개체들을 위해 쓰인다.

    * Heap layout 할당에 영향을 주는 스위치들
    명령행 스위치 설명
    ————-|——-
    -Xms=[n]  최소 heap size
    -Xmx=[n]  최대 heap size
    -XX:PermSize=[n]  최소 perm size
    -XX:MaxPermSize=[n]  최대 perm size
    -XX:NewSize=[n]  최소 new size
    -XX:MaxNewSize=[n]  최대 new size
    -XX:SurvivorRatio=[n]  New/survivor 영역 비율
    -XX:newratio=[n]  Old/new 영역 비율. HotSpot 클라이언트 VM은 8, HotSpot 서버 VM은 2.
    -XX:TargetSurvivorRatio=[n]  GC동안 비울 생존자 수용 가능량 퍼센티지 (capacity percentage.) 초기값은 50%

    * New Generation 메모리 할당 공식
    Eden = NewSize – ((NewSize/(SurvivorRatio + 2)) * 2)
    From space = (NewSize – Eden)/2
    To space = (NewSize – Eden)/2
    * Old Generation 메모리 할당 공식
    Old = Xmx – MaxNewSize

    * GC한 상태의 Heap메모리 정보출력
    jdk1.4에서 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC

    * 정적페이지가 많을 때
    -Xms418m -Xmx418m
    -XX:PermSize=1024m
    -XX:MaxPermSize=1024m
    -XX:NewSize=290m
    -XX:MaxNewSize=290m
    -XX:SurvivorRatio=3

    * 동적인 페이지가 많을 때
    -Xms1024m -Xmx1024m
    -XX:PermSize=128m
    -XX:MaxPermSize=128m
    -XX:NewSize=800m
    -XX:MaxNewSize=800m
    -XX:SurvivorRatio=4

    -Xms384m -Xmx384m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=3

    출처 : http://gamadeus.tistory.com/145?srchid=BR1http%3A%2F%2Fgamadeus.tistory.com%2F145

    두번째 참고
     이것은 동시접속 성능 개선을 위한 톰캣 튜닝 방법

    è Tomcat설정 변경 : Server.xml

     

    maxThreads=”1024″ minSpareThreads=”126″ maxSpareThreads=”512″

    enableLookups=”false” redirectPort=”8888″ acceptCount=”100″

    connectionTimeout=”5000″ disableUploadTimeout=”true” />

     

     

    è WEB-INF\classes\SqlMapConfig.xml

     

    lazyLoadingEnabled=”true” maxRequests=”2048″ maxSessions=”512″

    maxTransactions=”1024″ useStatementNamespaces=”false” />

     

     

    è JVM Heap Memory 설정 : Startup.bat

    set JAVA_OPTS= -Xms512m -Xmx1024m -MaxPermSize=128m

     

     

    è AdmPoolFactory.java

    GenericObjectPool.Config getDefaultConfig(){

    GenericObjectPool.Config config=new GenericObjectPool.Config();

    config.maxIdle=32;

    config.minIdle=8;

    config.maxActive=128;

    config.testOnBorrow=true;

    return config;

    }

      출처 : http://lkhstory.blogspot.com/2010/08/tomcat.html

    세번째 위에것들 참고하여 본인이 작업한거.
    (
    작업결과 속도개선에는 위 방법이 별 효과가 없는 듯)

    참고 : http://www.webpagetest.org (웹 페이지 속도테스트 사이트)

    user 프로파일을 다음과 같이 변경 하였음.
    이건 머 catalina.sh에 해도 되고. startup.sh에 해도 되고 본인이 하고 싶은곳에 환경설정 하면 되는 것임.
    export JAVA_OPTS=”-Xms1024m -Xmx1024m -XX:MaxPermSize=128m”
    뒤에 MaxPermSize 는 앞에 -XX:  이렇게 붙여줘야 됨.

    본인은 apache mod_jk를 이용하여 AJP 커넥션을 사용함
    – 톰캣 설정에서는 다음과 같이 minSpareThreads, maxSpareThreads, acceptCount 추가 하였음. maxThreads 는변경
    <Connector port=”8110″
    enableLookups=”false”
    redirectPort=”8513″
    debug=”0″
    protocol=”AJP/1.3″
    URIEncoding=”UTF-8″
    maxThreads=”512″
    minSpareThreads=”128″
    maxSpareThreads=”256″
    acceptCount=”100″
    connectionTimeout=”600000″
                                    disableUploadTimeout=”true” />

    tomcat 관련 설정 내용 참고 : http://tomcat.apache.org/tomcat-4.1-doc/config/coyote.html

    – 참고로 아파치의 workers.properties 설정 부분(이쪽은 머 기존 설정에서 건드린게 없습니다.)
    worker.nipa_worker1.type=ajp13
    worker.nipa_worker1.host=210.10.10.56
    worker.nipa_worker1.port=8110
    worker.nipa_worker1.lbfactor=1
    worker.nipa_worker1.connect_timeout=5000
    worker.nipa_worker1.prepost_timeout=5000
    worker.nipa_worker1.socket_keepalive=True
    worker.nipa_worker1.socket_timeout=10
    worker.nipa_worker1.connection_pool_timeout=600

    apache mod_jk 관련 설정 내용 참고 : http://tomcat.apache.org/connectors-doc/generic_howto/timeouts.html

    본인의 설정이 전부 맞다고 생각하시면 안되고 저는 이렇게 했다는 것입니다.
    참고만 하세요.
    아직도 저는 고생중이랍니다. 앞으로도 쭈욱~~ 완벽하게 세팅하는 그날까지.
    혹여나 이눔의 톰캣때문에 고생하시는 분들이 있으실까봐 부족하나마 남겨봅니다.

    요래저래 찾는중에 위에 두 블로거님께 감사드립니다.

     

    출처 : http://deve.tistory.com/category/apache-tomcat

    Comments

    comments

    Post Tagged with , ,

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.