Tomcat과 Catalina

DEV/Web

Tomcat과 Catalina

BI3A 2025. 11. 12. 17:38

반응형

Tomcat과 Catalina

Tomcat

Tomcat은 Apache 재단에서 제공하는 Java 웹 애플리케이션 서버(Web Application Server)이다.
웹 서버 기능뿐만 아니라 Servlet/JSP 컨테이너, HTTP 커넥터, 클러스터링, JNDI 리소스 관리 등 다양한 기능을 포함한 전체 프레임워크를 의미한다.

Catalina

Catalina는 Tomcat의 핵심 엔진으로, Servlet과 JSP를 실제로 실행하는 컨테이너이다.
Tomcat이 구동되면 Catalina 클래스(org.apache.catalina.startup.Bootstrap)가 JVM에서 시작되며, 웹 애플리케이션의 서블릿과 JSP를 관리한다.
즉, Tomcat은 건물 전체이고, Catalina는 그 안의 엔진 역할을 하는 기계실과 같다.

구성 요소 구조

Apache Tomcat

├── Catalina ← 서블릿/JSP 컨테이너
├── Coyote ← HTTP Connector, 요청/응답 처리
├── Jasper ← JSP Compiler, JSP → Servlet 변환
├── Cluster ← 세션 복제 관리
└── Naming/JNDI ← 리소스(DataSource 등) 관리

 


2. 웹 애플리케이션 배포 구조

WAR 배포

Tomcat에 웹 애플리케이션을 올릴 때는 대부분 WAR 파일을 사용한다.
WAR 파일은 Catalina 엔진의 JVM 프로세스 안에서 실행된다.
즉, 각 웹 애플리케이션은 독립 JVM이 아니라 Catalina JVM 내부에서 동작하며, Catalina JVM의 힙을 공유한다.

요청 흐름

[클라이언트 요청]

[Coyote Connector] ← HTTP 요청 수신

[Catalina Engine] ← 서블릿 매핑 및 실행

[Jasper] ← JSP를 Servlet으로 변환 후 실행

[웹 애플리케이션] ← 실제 로직 수행

 

  • WAR 파일 자체에는 JVM 옵션을 지정할 수 없다.
  • 모든 웹 애플리케이션은 Catalina JVM의 -Xmx, -Xms 등 힙 설정을 그대로 공유한다.
  • 여러 웹 애플리케이션이 동시에 많은 메모리를 사용하면 Catalina JVM의 힙 부족이 발생할 수 있다.

3. JVM 옵션 설정 방법

Catalina JVM에 옵션 적용

  • JVM 옵션(-Xmx, -Xms 등)은 Catalina JVM 프로세스에 적용해야 한다.
  • 권장 파일 위치:
    • Linux/macOS: $CATALINA_HOME/bin/setenv.sh
    • Windows: %CATALINA_HOME%\bin\setenv.bat

 

예시 설정

Linux/macOS

export CATALINA_OPTS="-Xms1024m -Xmx4096m -XX:+UseG1GC -XX:MaxPermSize=256m"

Windows

set CATALINA_OPTS=-Xms1024m -Xmx4096m -XX:+UseG1GC -XX:MaxPermSize=256m

 

CATALINA_OPTS는 Tomcat 서버 시작 시에만 적용된다.

JAVA_OPTS는 stop/start 모두에 적용되므로 보통 힙 튜닝에는 사용하지 않는다.

 

확인 방법(for Unix/Linux)

 

 

  1. Catalina 관련 기본 지식과 구성 요소
    주요 구성 요소
    구성요소 역할
    Engine Catalina 엔진, Host와 Context 관리
    Host 가상 호스트 관리, appBase를 통해 WAR 위치 지정
    Context 웹 애플리케이션 단위 관리, 각 웹앱의 서블릿 매핑
    Wrapper 서블릿 단위 관리, 서블릿 생명주기 관리
    Connector Coyote 기반, 클라이언트 요청 수신 및 Catalina 전달

로그 구조
Catalina 로그: $CATALINA_HOME/logs/catalina.out

WebApp 로그: 웹 애플리케이션 내부에서 지정한 로깅 (logback, log4j 등)

서버 설정 파일
파일 역할
conf/server.xml Catalina Engine, Host, Connector 설정
conf/context.xml 웹 애플리케이션별 Context 설정
conf/web.xml 서블릿 매핑, 필터, 리스너 등 글로벌 설정

  1. 실무 팁
    여러 웹앱이 하나의 Catalina JVM을 공유하므로, Xmx를 적절히 조정하여 OutOfMemoryError를 방지해야 한다.

각 웹앱별 독립 JVM이 필요하면, Tomcat 인스턴스를 별도로 구동하거나 Spring Boot 등으로 개별 JAR 실행 방식을 고려한다.

Catalina의 Engine, Host, Context 구조를 이해하면 멀티 호스트 환경, WAR 배포, 세션 관리 등 실무 운영에 큰 도움이 된다.

JVM 옵션뿐만 아니라 GC, JMX, 디버깅 옵션도 CATALINA_OPTS에서 함께 관리한다.

 

반응형

'DEV > Web' 카테고리의 다른 글

[HTTP] 상태 코드(Status Code) 설명  (11) 2023.12.06