반응형

Tomcat symbol

<

Apache httpd symbol



  예전에 포스팅했던 글에서 제가 웹서버의 성능을 향상 시키기 위해 아파치(Apache, httpd)톰캣(Tomcat)을 연동한다고 했었습니다. 그런데 열심히 항해를 하다가 그것이 불필요한 일이라는 것을 알아버렸네요.

출처를 먼저 밝히겠습니다.
Tomcat expert라는 커뮤니티입니다.

http://www.tomcatexpert.com/blog/2010/03/24/myth-or-truth-one-should-always-use-apache-httpd-front-apache-tomcat-improve-perform

내용을 제 나름대로 해석하고 요약해봤습니다.
정말 제 나름이니 정확한 내용을 보실분은 출처를 꼭 한번 따라가 보시길^^;;


Myth or truth : 사람들은 항상 성능을 향상시키기 위해 아파치 Tomcat 앞에 아파치 httpd 를 사용해야합니까?

간단히 말하면 그 것은 Myth이다. 좀 더 이야기하면 Tomcat 3 이전에는 상황에 따라 어느 정도 진실이었다. 하지만 요즘 사용하는 Tomcat (5.5.x 이후)은 순전히 성능상의 이유만으로 httpd (아파치) 를 사용할 필요가 없다. Tomcat은 현재 low-level I/O를 위해서 httpd와 같은 기본 라이브러리를 사용하여 httpd와 비슷한 기능을 수행할 수 있는 native/APR(Apache Portable Runtime) connector를 지원한다. Tomcat으로 정적인 컨텐츠를 제공할 경우 httpd에 비해 약간 부하가 더 있지만 그 차이는 눈에 띄지 않을 정도다.

종종 벤치마크에서 예상외로 httpd보다 Tomcat이 좋을 성능을 발휘했다. 이는 Tomcat은 기본적으로 메모리에 작은 정적 파일을 캐시하고 httpd는 기본적으로 메모리에 파일을 캐시하지 않기 때문이다.

최상을 성능을 달성하기 위한 설정은 다양하다. 이는 여러가지 요인에 크게 의존한다.

그외에 복 수의 Tomcat 인스턴스에 로드밸런싱을 위해 Apache를 사용한다. (로드밸런싱을 위한 유일한 옵션은 아니지만)

요약하면 Tomcat과 httpd를 합께 사용하면 좋은 이유들이 있지만 정적 페이지의 성능을 위한 이유는 그 중 하나가 아니다.


  원문에는 벤치마크에 대한 내용과 이런저런 connector 들에 대한 이야기가 나와 있습니다. 저는 그렇게까지 전문적인 내용은 필요가 없으므로 제가 이해할 만한 내용만 적어봤습니다.

  때로는 그저 그냥 당연하다고 생각한 것이 사실은 전혀 당연한게 아닐 수도 있군요.

반응형
반응형

  아래 글을 쓰기 위해 사용한 환경은 다음과 같습니다.
  - MS Windows 7 ultimate 64bit
  - Apache 2.2.21
  - Apache Tomcat 6.0.35
  - mod_jk 1.2.31


  제가 예전에 공부했던 JSP(Java Server Page) 페이지를 좀 만들어보려고 톰캣(tomcat)을 설치했습니다.

  그런데 톰캣만 사용하기에는 일반적인 웹서버가 아니라서 80번 포트로 접속되는게 아니라 8080이나 사용자가 정의한 포트로 접속하는 거라서 약간의 불편함이 있지요. 아래 그림 처럼 말이죠.. 귀여운 고양이를 만나기 위해 8080포트를 꼭 명시해 줘야 합니다 ㅠ


  또 톰캣은 http 서버를 내장하지만 정적 페이지를 로딩하는데에 웹 서버보다 수행 속도가 느리기 때문에 아파치(apache) 같은 정적인 페이지를 로드하는데 사용하는 웹 서버와 연동해서 사용합니다.

  그래서 저도 아파치를 설치하고 톰캣과 연동해서 사용하기로 했습니다. 이렇게 하면 정적인 페이지는 아파치가 jsp 나 서블릿은 톰캣이 처리하게 되죠.

  본격적으로 아파치와 톰캣이 정상적으로 설치되었다는 가정하에 연동 방법에 대해 설명드리겠습니다.

  우선 http://mirror.apache-kr.org//tomcat/tomcat-connectors/jk/binaries/windows/ 에서 톰캣 커넥터를 다운로드 받습니다. 저는 윈도우의 아파치 웹서버 환경이라서 위 링크로 따라갔지만 다른 환경(IIS같은 다른 웹서버 또는 다른 운영체제)이라면 당연히 다른 경로와 파일을 선택해서 다운 받으셔야합니다. 

 



다운로드가 완료되면 파일 앞축을 풀고 mod_jk.so 파일아파치 설치 폴더 아래의 modules 폴더에 복사합니다.

아파치설치폴더\modules\



  그 다음은 아파치 설치 폴더 아래의 conf 폴더에 있는 설정 파일인 httpd.conf 파일을 조금 수정해줍니다. 찾아보시면 LoadModule로 시작하는 줄들이 죽~ 있는 것을 보실 수 있는데  거기에 다음 한 줄을 추가해 줍니다.

LoadModule jk_module modules/mod_jk.so

모듈을 로드하고 그 모듈의 so 파일이 있는 위치를 정해 준것이라 생각하시면 되겟네요.

다음은 마지막 즈음에 다음을 추가해 줍니다.

Include conf/mod_jk.conf

  jk_module에 대한 설정을 적은 파일을 httpd.conf에 포함시켜주는 것이죠. jk_module에 대한 설정 파일을 따로 만들기 싫으시면 그 파일의 내용을 위 한 줄 대신 써주시면 됩니다.

  저는 설정 파일을 따로 만들기로 했으니 위에 적은 경로인 아파치 설치 폴더 아래의 conf 폴더에 mod_jk.conf라는 파일을 만들겠습니다. 방금 말씀 드렸듯이 이 방법이 싫다면 아래 내용을 httpd.conf 파일에 직접 추가하시면 됩니다.

JkWorkersFile "F:/Apache2.2/conf/workers.properties"
JkLogFile "F:/Tomcat 6.0/logs/mod_jk.log"
JkLogLevel error
JkAutoAlias "F:/Tomcat 6.0/webapps"
JkMount /* ajp13
JkUnmount /*.php ajp13
<Directory "F:/Tomcat 6.0/webapps">
 Options Indexes FollowSymLinks
 allow from all
</Directory>

  그리고 다음은 상자 첫줄에 있는 workers.properties 파일을 작성해 줍니다.
  첫 줄에 톰캣이 설치된 경로, 둘째 줄에 자바가 설치된 경로입니다. 나머지 부분은 내공이 부족하여 설을 못드리겠습니다. ㅠㅠ
  이렇게 하면 된다는 것 까지밖에.. 어쩌면 불필요한 줄이 있을지도 모르겠군요. 고수님의 댓글 부탁드립니다.!!

workers.tomcat_home="F:/Tomcat 6.0"
workers.java_home="F:/Java/jdk1.6.0_30"
ps=/
 
worker.list=ajp12, ajp13
worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
worker.ajp12.lbfactor=1
 
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
 
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp12, ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stder

  이렇게 모든 과정을 거치는 동안 느낀 것은 거의 모든 작업은 텍스트파일에 의해 이루어 진다는 것입니다. 사람이 이해하기 좋으면서 가장 단순한고 왜곡이나 압축 없이도 그 용량이 적은 것은 텍스트가 아닐까 생각되네요.

  아파치와 톰캣을 다시 시작한 후 결과는 다음과 같습니다.
  이제 80번 포트로 접속해도 귀여운 고양이 한마리가 웃고 있네요 ^^연동이 잘 되었군요!!


반응형

+ Recent posts