혼자 공부한내용을 토대로 톰캣 서버의 성능 향상, 동시 접속자 대응, 그리고 트래픽 폭주 시 서버 설정에 대해 정리했습니다.
1. 톰캣 성능 향상을 위한 튜닝
1.1 적절한 메모리 할당
톰캣의 성능을 향상시키기 위해서는 적절한 메모리 할당이 중요합니다. 메모리를 부족하게 설정하면 OutOfMemoryError가 발생할 수 있으며, 과도하게 할당하면 시스템 전체 성능에 영향을 줄 수 있습니다. JAVA_OPTS 환경 변수를 사용하여 힙 메모리 크기를 조절할 수 있습니다.
# 톰캣 실행 스크립트인 'catalina.sh' 파일에서 설정한다.
export JAVA_OPTS="-Xms256m -Xmx512m"
1.2. 스레드 풀(Thread Pool) 설정
톰캣의 성능을 향상시키기 위해 Executor를 사용하여 스레드 풀을 구성할 수 있습니다. 스레드 풀은 요청에 대한 응답을 빠르게 처리할 수 있게 해줍니다. server.xml 파일에서 아래 설정을 추가하세요.
<!-- server.xml 파일 -->
<Server>
...
<Service name="Catalina">
<!-- 스레드 풀 설정 추가 -->
<Executor name="tomcatThreadPool" namePrefix="tomcat-exec-" maxThreads="150" minSpareThreads="10"/>
...
</Service>
...
</Server>
🥸 maxThreads 는 동시접속에 영향을 주지만 유연성이 떨어진다고합니다.
2. 동시 접속자 대응 및 트래픽 폭주 시 대응
2.1. Connector 설정 변경
동시 접속자가 증가하거나 트래픽 폭주 시, Connector 설정을 변경하여 대응할 수 있습니다. server.xml 파일에서 아래와 같이 maxConnections, maxThreads, acceptCount 설정을 변경하세요.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
executor="tomcatThreadPool"
maxConnections="10000"
acceptCount="500" />
🥸
connectionTimeout : 타임아웃시간을 지정한다(밀리초 단위)
executor : 1.2 에서 설정한 스레드풀을 사용하도록 지정하는 태그
maxConnections : 동시에 처리할수있는 최대 연결 수를 지정
acceptCount : 최대 연결수에 도달했을때 대기할수있는 추가연결요청 수
3. 그 외 방법
3.1. 클러스터링과 로드밸런싱
클러스터링으로 여러톰캣서버 하나로 묶고, 로드밸런서로 트래픽을 분산시킬수있다는데 너무어려워서 안찾아봄
'Server > Server' 카테고리의 다른 글
[Tomcat] 톰캣 세션(session) 타임아웃 설정 및 세션 우선순위 (0) | 2023.01.11 |
---|---|
[Tomcat] appBase, docBase 차이 및 설정 방법 (0) | 2022.04.21 |
[Tomcat] 2개 서버 localhost 에서 세션 끊길때 (0) | 2021.11.11 |