얼마전에 성철이 형이 물어봐서 답해줬던 내용이다.

많은 개발자들이 애플리케이션 서버로 톰캣을 사용하는 경우에 스태틱 파일(html, css, js, 이미지)은 톰캣 앞에 아파치 웹 서버(Httpd)를 두어서 처리하게 하는 것이 좋다고 생각한다. 외부의 요청은 일단 Apache Httpd가 받고, 톰캣 내에서 처리할 자바 애플리케이션만 톰캣으로 다시 전달해서 처리하고 그 외의 리소스는 Apache Httpd가 직접 처리하게 만들어야 성능이 좋다고 생각한다. 자바로 만든 서버인 톰캣은 스태틱 파일 처리에서 Apache Httpd만 못하다는 것이 그 이유다.

하지만 톰캣과 Httpd의 개발자에 따르면 이는 개발자들이 잘못 알고 있는 미신이다. 아직도 톰캣 3를 사용하고 있는 것이 아니라면 말이다.

자세한 내용은 Myth or truth: One should always use Apache httpd in front of Apache Tomcat to improve performance?에 잘 나와있다. 지금은 스프링 소스의 직원이 된 아파치 톰캣과 Httpd 의 핵심 개발자들이 직접 작성한 내용이다.

톰캣은 5.5부터 Httpd의 native 모듈을 사용해서 스태틱 파일을 처리하는 기능을 제공한다. 이 경우 Httpd와 톰캣이 같은 모듈을 사용하는 셈이니 성능에서 차이가 날 이유가 없다. 실제 테스트 한 결과를 봐도 톰캣에서 아파치 Native 모듈을 사용하는 것이 순수하게 아파치 Httpd만 사용하는 것과 비교해서 성능이 전혀 떨어지지 않는다.

따라서 단지 스태틱 파일 처리의 성능만을 위해서라면 굳이 톰캣 앞에 Apache Httpd를 두는 것은 불필요하다. 오히려 메모리만 많이 먹고, 관리부담은 커지고, 불필요한 부하만 걸릴 뿐이다.

물론 Httpd의 다른 기능이나 모듈을 사용해야 할 필요가 있다면 그때는 Httpd를 앞에 두고 사용해야겠지만. 예를 들어 하나의 서버에서 PHP 애플리케이션과 자바 애플리케이션을 함께 사용하거나, Httpd 서버를 간단한 로드밸런싱을 위해서 사용해야 하는 경우라면 Httpd를 앞에 두고 톰캣을 연결해서 사용하도록 하면 될 것이다.

Related posts:

  1. 스프링 컨테이너에는 설정파일이 없다
  2. 파이썬 완벽 가이드 전자책
  3. Maven archetype 설정파일 자동생성기 – ArchetypeXmlWriter
  4. Spring 3.0 (59) 프로퍼티 파일 이용하기 – placeholder vs SpEL
  5. 유쾌한 이슈처리 재촉 메일
  6. Spring-OSGi 시작하기 – OSGi
  7. 당신은 고난받기 위해 태어난 사람
  8. Apache Tomcat Tips & Tricks from the Pros – 웨비나 소식
  9. Spring 3.0 (58) Static Class를 XML없이 빈으로 등록하기
  10. [토스3] 스프링 3.0.4 <mvc:default-servlet-handler/>를 이용해서 UrlRewriteFilter없이 깔끔한 URL을 만들기
  11. 태터툴즈 이틀 사용기

Facebook comments:

to “톰캣 앞에 아파치 웹 서버(Httpd)를 두어야 할까?”

  1. 아 그렇군요!!
    좋은 정보 감사합니다.

  2. 저는 아직까지는 프론트 웹 서버가 있어야 된다고 생각합니다.
    이미 실험 결과로는 Tomcat의 정적 파일 서빙이 Apache를 능가하거나 필적한다는 결과가 나왔다고는 하나, Apache의 다양한 설정기능, 그리고 Tomcat이 느려진 상태 혹은 쓰레드가 꽉찬 상태에서의 오류 출력, 그리고 Tomcat을 내린상태로 프로그램을 재배포 할 때의 오류 페이지 출력 등등..
    여러가지 면에서 Tomcat외의 정적 서빙 웹서버가 큰 도움이 된다고 봅니다.

    결국 저는 아직까지 Apache(혹은 그 외의 WAS앞단의 웹서버)를 써야할 이유가 너무 많은 것 같습니다.

    매우 단순한 단일 서버 홈페이지를 운영하 경우는 제외 입니다. 그때는 아파치를 쓰는게 더 귀찮은 일이 될 듯하네요.

    • 원문을 다시 읽어보니.. 이미 원문에서 얘기 또 한 느낌이네요.. ㅋ

    • 저도 공개된 서비스 사이트를 만들 때는 비슷한 이유로 아파치를 사용합니다. 하지만 부하가 많지 않고 가용성이 그다지 중요하지 않은 기업/팀 내부 시스템의 경우나, 로드 밸런서를 잘 활용할 수 있는 경우라면 굳이 아파치를 둘 필요가 없더라고요.
      톰캣이 죽으면 아파치에서 Service Unavailable이라는 에러 메시지가 덜렁 뜨게 방치해두면서 단지 성능을 핑계로 사용할 이유는 없다는 거죠.

  3. 중요한건 정확한 이유도 모른체 무조건 apache와의 연동을 설계하는다는것이 아닐까해요. 실제로 저런 이유가 있다는걸 아는건 중요한것 같습니다. 저도 몰랐었어요.

    토비형님 쌩유~

  4. 또 문제는 80포트 인데요. private port를 일반유저가 열수 없으니 root로 열게 되고
    WAS가 thread가 root 계정을 갖게 될 때 잘못하면 시스템 무장해제 될 수도 있습니다.
    간단한 시스템은 문제가 없겠지만요..

    • 아파치 Httpd 없이도 톰캣을 일반유저 권한으로 동작시키면서 80포트로 접근하게 할 수 있습니다. 아파치 Commons의 Jsvc를 이용해도 되고 iptables를 이용한 포트 포워딩을 사용해도 됩니다.

  5. 오호.. 저도 아무생각없이 남들이 그렇다니까 그냥 그런줄 알고 썼는데,
    덕분에 좋은 정보 알아갑니다.^^

    감사합니다.

  6. 스태틱 파일 처리라면 아파치 연동을 쓰는 수많은 이유중 하나일뿐인 마치 그것 하나 때문에 꼭 아파치를 쓰는 듯한 분위기가 있는 것 같습니다.
    왜 이럴 때면 자바 인터페이스가 다중 상속을 지원하기 위한 방법이라는 옛 미신들이 생각날까요…

    요즘에는 아파치 말고도 더 좋은 웹서버들이 많이 있는 것 같아 도입해보고 싶네요…

  7. 궁굼한게 있습니다. (제가 잘못 이해 할 수 도 있습니다.. 토비님~^^)
    images, js, css 파일 같은 정적 resource는 다시 서버에 요청하잖아요. (물론 브라우저가 캐쉬하고 있겠지만요..)
    이미지가 많으면 많을수록 톰캣의 부하가 심할것 같은데요.
    이럴때 apache, tomcat에게 요청을 분산하는 용도로 연동해서 사용하는건
    큰 의미가 없나요?
    tomcat이 apache처럼 정적 resource를 처리하는게 빠르다 하더라도 쓰레드는 한정되어 있을것 같구요. 최대한 이 쓰레드는 jsp(servlet)를 처리하도록 하고 나머지는 apache가 처리하도록 하는게 좋을 것 같은데요.

    물론 위 사항은 동접이 1000명이상일때 입니다.
    주로 관공서 프로젝트를 하기때문에 동접이 1000명에서 3000명정도 됩니다.

    • 이미지 처리 등은 톰캣이 아니라 native module(APR)에서 담당을 할테니 그 자체로 톰캣에 부하를 크게 줄 것이라고 보이지는 않습니다.
      서버의 사용특성에 따라서 어떤 구조가 좋을 지는 테스트로 검증해 보시는 것이 좋을 듯 싶습니다.

  8. 위에 동접은 로그인한 사용자입니다. 좀 헷갈릴 수 있겠네요.
    동시접속이 아닌 로그인해서 대기중인 인원입니다.
    하지만 아침, 저녁 같은 시간대는 동접이 많습니다.
    결재때문에 같은 시간대에 많이 들어 오거든요.

  9. 저도 로드 발란싱은 L4(H/W 처리)에서 처리해 주는 경우에, API 서비스 등에는 Tomcat 자체로 서비스하는 걸 권고하고 있습니다. 포스트 내용 공감합니다.

  10. 톰캣에서도 아파치의 mod_deflate 같은 압축방식을 사용할 수 있나요?

    • 모듈 추가는 아파치를 독립적으로 사용할 때만 가능한 것으로 알고 있습니다. 혹시 모르니 최신 톰캣 문서를 확인해보세요.

  11. cxyRxC sgshqsyqivdf, [url=http://jkgttosudqdq.com/]jkgttosudqdq[/url], [link=http://zdrjlfqvunzc.com/]zdrjlfqvunzc[/link], http://gskcayznbyoy.com/

  12. 5Zt2qa qfxtmufqhyec, [url=http://ywhtewnrmjro.com/]ywhtewnrmjro[/url], [link=http://jnjfznbllobz.com/]jnjfznbllobz[/link], http://uwagqheyhwqe.com/

  13. Excellent subject I could not of thougth off that !

  14. Thanks for some great information reagrding this

  15. PWuCsA mdkkbsrbmfeu, [url=http://znujryzvnead.com/]znujryzvnead[/url], [link=http://lgowmknyemuo.com/]lgowmknyemuo[/link], http://yzztvfoihwob.com/

  16. Per Quanto riguarda La Bruna, lei drenante l’Energia Vitale di Tutti Gli uomini che borse, ma vieni e persico Diventare pasticci incomprensibili. Ancora peggio, Parker Capisce Tutto tramite Troppo fácilmente, utilizzando alcuni Indizi sconcertanti di evocare Una Teoria di sana pianta e di Colpire su di Una Soluzione al dilemma Duca con solista lo stretto accenno di Logica. L’episodio tira fondamentalmente Una risoluzione di Fuori del Suo asino, Riabilita con Un po ‘agitando la mano, e la presentazione di un noi Come un prodotto Finito. Aggiungere pi acqua se diventa Troppo spessa o pi di Olio di Ricino SE Troppo acquoso. Versare delicatamente il Composto di olio Silla spugna e stenderlo Sulla Schiena. Quindi inserire l’estremit spugna in Un sacchetto di plastica per utilizzare Il Giorno successivo.

  17. There are some interesting points in time in this article but I don’t know if I see all of them center to heart.There is some validity but I will take hold opinion until I look into it further.Good article , thanks and we want more! Added to FeedBurner as well

  18. gucci mane trap back review 톰캣 앞에 아파치 웹 서버(Httpd)를 두어야 할까? » Toby’s Epril

  19. gucci clothing babies 톰캣 앞에 아파치 웹 서버(Httpd)를 두어야 할까? » Toby’s Epril

  20. mephisto shoes online 톰캣 앞에 아파치 웹 서버(Httpd)를 두어야 할까? » Toby’s Epril

  21. nike sale 톰캣 앞에 아파치 웹 서버(Httpd)를 두어야 할까? » Toby’s Epril

  22. mbt shoes kabisa sale london 톰캣 앞에 아파치 웹 서버(Httpd)를 두어야 할까? » Toby’s Epril

  23. mbt sales 톰캣 앞에 아파치 웹 서버(Httpd)를 두어야 할까? » Toby’s Epril

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha