IT관련

Apache Tomcat 설정값 정리

파란하늘999 2026. 1. 30. 10:15

Apache Tomcat은 Java 기반 웹 애플리케이션을 배포하고 실행하기 위한 오픈소스 웹 서버이자 서블릿 컨테이너입니다. Tomcat을 설치한 후 기본 설정만으로도 동작하지만, 실제 운영 환경에서는 포트, 스레드 수, 메모리, 보안 등 다양한 설정을 조정해야 안정적이고 효율적으로 운영할 수 있습니다.

이 글에서는 Tomcat의 주요 설정 파일과 자주 수정하는 핵심 설정값들을 중심으로 정리합니다.

 

예시는 Tomcat 10.x 기준이며, 최신 버전(11.x 이상)에서도 대부분 호환됩니다.

1. 주요 설정 파일 위치

Tomcat 설치 디렉터리(예: /opt/tomcat 또는 C:\tomcat) 아래 conf 폴더에 위치

  • server.xml : 서버 전체 설정 (포트, 커넥터, 호스트, 엔진 등) – 가장 많이 수정
  • web.xml : 모든 웹 애플리케이션에 공통 적용되는 기본 설정 (세션 타임아웃, MIME 타입 등)
  • context.xml : 컨텍스트 관련 설정 (데이터소스, 리소스 등)
  • catalina.properties : JVM 속성, 로깅 등
  • setenv.sh / setenv.bat : JVM 옵션 (메모리 설정 등) – 직접 생성해야 함

2. server.xml 주요 설정값

conf/server.xml은 Tomcat의 핵심 설정 파일

<Server port="8005" shutdown="SHUTDOWN">
    <Service name="Catalina">
        
        <!-- HTTP 커넥터 (기본 포트 8080) -->
        <Connector port="8080" 
                   protocol="HTTP/1.1"
                   maxThreads="200"          <!-- 최대 스레드 수 (기본 200) -->
                   minSpareThreads="25"      <!-- 최소 여유 스레드 -->
                   maxConnections="10000"    <!-- 최대 동시 연결 수 -->
                   acceptCount="100"         <!-- 대기 큐 크기 -->
                   connectionTimeout="20000" <!-- 연결 타임아웃 (ms) -->
                   redirectPort="8443"       <!-- HTTPS 리다이렉트 포트 -->
                   compression="on"          <!-- Gzip 압축 활성화 -->
                   compressionMinSize="2048" <!-- 압축 최소 크기 (바이트) -->
                   compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" />

        <!-- HTTPS 커넥터 예시 (8443 포트) -->
        <Connector port="8443" 
                   protocol="org.apache.coyote.http11.Http11NioProtocol"
                   maxThreads="200"
                   scheme="https" 
                   secure="true"
                   SSLEnabled="true"
                   keystoreFile="/path/to/keystore.jks"
                   keystorePass="changeit"
                   clientAuth="false" 
                   sslProtocol="TLS" />

        <!-- AJP 커넥터 (Apache와 연동 시 사용, 8009 포트) -->
        <Connector port="8009" 
                   protocol="AJP/1.3" 
                   redirectPort="8443" />

        <Engine name="Catalina" defaultHost="localhost">
            <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
                <!-- 기본 Context -->
            </Host>
        </Engine>
    </Service>
</Server>

자주 수정하는 값들

설정 항목 추천/일반값 설명
Server port 8005 shutdown 명령을 받는 포트 (보안 위해 변경 권장)
Connector port 8080 → 80 (운영 시) HTTP 기본 포트. 운영 환경에서는 80으로 변경하고 root 권한 필요
maxThreads 200 ~ 500 (서버 사양에 따라) 최대 동시 처리 스레드. CPU 코어 × 50~100 정도가 기준
maxConnections 10000 NIO 기준 최대 연결 수
acceptCount 100 ~ 500 연결 대기 큐 크기 (maxThreads 초과 시 대기)
compression on 응답 Gzip 압축 활성화 → 트래픽 절감
connectionTimeout 20000 (20초) 연결 타임아웃

3. web.xml 주요 설정값

모든 웹앱에 공통 적용

<session-config>
    <session-timeout>30</session-timeout> <!-- 세션 타임아웃 (분) -->
</session-config>

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
  • 세션 타임아웃은 보통 30분 ~ 60분으로 설정
  • 기본 페이지 순서를 필요에 따라 조정.

4. 메모리 설정 (JVM 옵션)

bin/setenv.sh (Linux) 또는 setenv.bat (Windows) 파일을 생성해서 설정

# setenv.sh 예시
export CATALINA_OPTS="-Xms1024m -Xmx4096m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  • -Xms : 초기 힙 메모리
  • -Xmx : 최대 힙 메모리 (서버 물리 메모리의 50~70% 권장)
  • G1GC는 대용량 메모리 환경에서 안정적

5. 보안 관련 추천 설정

  • shutdown 포트 변경 또는 비활성화
  • Manager 앱 접근 제한 (conf/tomcat-users.xml에 사용자 추가)
  • 불필요한 Connector 비활성화 (AJP 등)
  • HTTPS 강제 적용

마무리

Tomcat 설정은 서버 사양, 트래픽 규모, 애플리케이션 특성에 따라 크게 달라집니다.

 

기본값으로 시작한 후 실제 부하 테스트(JMeter 등)를 통해 튜닝하는 것을 추천합니다.

공식 문서: https://tomcat.apache.org/tomcat-10.1-doc/index.html

반응형