moonumi
2005-06-27 10:00:04
5
14380

톰켓에서 Context Reload를 빨리해보장.


  <Service name="Tomcat-Standalone">
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8009" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="0" connectionTimeout="0"
               useURIValidationHack="false"
               protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
    <Engine 사용자설정>
      <Logger 사용자설정/>
      <Realm 사용자설정/>
      <DefaultContext reloadable="true" swallowOutput="true">
        <Loader checkInterval="8"/>
      </DefaultContext>

(내부 보안문제로 설정의 세부사항은 "사용자설정"으로 표기합니다.)

위 처럼 Engine 태그내에 reloadable에 true 말고도 Loader 태그로 checkInterval의 지정함으로서 톰캣의 컨텍스트 리로드 시기를 극적으로 앞당길수 있습니다. 물론 개발시에만 사용해야 겠죵? (성능문제가...)

 

또는

 

<Context 사용자설정 reloadable="true" >
  <Loader checkInterval="3"/>
  <Logger 사용자설정>
</Context>
<Context 사용자설정 reloadable="true" >
  <Loader checkInterval="3"/>
  <Logger 사용자설정>
</Context>

등의 형식으로 컨텍스트내에서 사용할수도 있습니다. context에서는 relodable을 true로 설정해 주셔야 합니다.

 

apache.org에서는

 

checkInterval

The number of seconds between checks for modified classes and resources, if reloadable has been set to true. The default is 15 seconds.

 

간단히 번역하자면 이렇게 나와 있습니다.

"클래스나 리소스의 변경을 체크하는 것으로 checkinterval에서의 단위는 초이며, reloadable을 true로 설정할 경우, 기본 값은 15 초 이다."

 

옹??. 15초였군요...

근데 왜케 리로드 안하지... 저는 무진장 답답했었는데,

저희 개발서버는 클래스 하나만 바꿔도 바로 바로 리로드 하는게 신기해서,

server.xml을 보니 못보던 위의 문장이 주석문으로 잘 들어 있더군요.

(실제로는 변경해서 사용하는듯...)

 

톰캣의 logs디렉토리에서 tail -f 로그화일이름

 

으로 보시면 context 리로드가 되면 context reload라는 메세지가 나오면서

세션정보가 다 날아간다고 에러 몇개랑 같이 나올겁니다.

세션에 저장된 정보가 시리얼라이즈,

옹??.. 제가 이 글에서 설명할 내용이 아니므로 패스~

 

많은 서블릿기반 웹 애플리케이션이나 웹 디벨로퍼에게 도움이 되었으면 하고 올립니다. 저처럼 relodable만 true 시키고 업뎃시켜줄때가졍 커피마시고 오는 농땡이는 이제 그만.. 으하아아아앙~

 

이값을 0 으로 하면 동작안합니다.

이값을 1로 하면 웹 애플리케이션에 따라 다르지만, 저희 서버에는 성능에 영향을 줄 정도입니다.

저희는 6, 7, 8의 값을 사용합니다.

 

아 다들 아시는 정보 같은데,

무식한 제가 올려 봤습니다. 이쁘게 봐주세용.. *^^*

아 글고 톰캣 사용버젼은 4.1x대입니다. 나머지 버젼을 찾아보셔야 될듯...

 

0
  • 댓글 5

  • 이희승
    2005-06-27 23:52:03
    보통 해당 context 디렉토리의 마지막 수정 시간을 갖고 체크하기 때문에 성능에 별 영향이 없지 않나요?
  • 협객
    2005-06-28 09:25:02
    몰랐습니다. ^^;
    좋은 정보 감사합니다. 바로 써먹어야징 아싸~
  • acsung
    2005-06-29 13:38:17
    thank you very very much
  • moonumi
    2005-07-04 11:25:17
    톰캣이 매번 그 체크하기 때문에 성능에 문제를 제기하게 되는 건데요.
    체크 속도가 빈번하면 체크안하는것보다는 성능에서 뒤지겠죠.
  • moonumi
    2005-07-04 11:28:50
    더구다나 요즘은 lib 디렉토리에 클래스만 있는것이 아니라 리소스(xml, properties)화일도 많이 있기 때문에, 그 숫자가 많으면 많은 수록 체크해야 되는 수가 늘어나는 것이구요.
    개인적인 용도로 사용하는 서버에서는 별 무리가 없을지도 모르겠네요.
    저희는 접속하는 개발자만 4명이라서 마구 마구 변경될때가 있어서, 1초에 한번씩 체크는 무리인듯하네요.
  • 로그인을 하시면 댓글을 등록할 수 있습니다.