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 등)를 통해 튜닝하는 것을 추천합니다.
반응형
'IT관련' 카테고리의 다른 글
| [Linux] 리눅스 스왑(Swap) 메커니즘 완벽 이해하기 (0) | 2026.02.05 |
|---|---|
| [SSMS 팁] 시작 시 '서버에 연결' 창 안 뜨게 설정하는 방법 (0) | 2026.02.03 |
| 🔍 Tomcat의 maxPostSize 체크 메카니즘 (0) | 2026.01.30 |
| Apache Tomcat server.xml에서 maxPostSize와 maxParameterCount 설정하기 (0) | 2026.01.29 |
| [JavaScript] 배열 마스터의 필수 관문, splice() 함수 완벽 정리 (0) | 2026.01.28 |