Tomcat Thread pool 설정 및 확인 방법
안녕하세요 오늘은 tomcat thread pool
설정과 설정 확인에 대해서 알아보도록 하겠습니다.
*Thread pool 설명
Thread pool 쓰레드 풀은 tomcat 요청 처리를 효율적으로 처리하기
위해 미리 생성해놓은 쓰레드를 사용하는것입니다.
요청마다 새로운 쓰레드를 만들어서 사용하는 것이 아닌
생성해놓은 쓰레드를 사용하는 것 이라고 알고 있으면 되겠습니다.
*설정 방법
pwd
/home/hunhee/tomcat-9/conf
#백업하기
cp server.xml server.xml_20260126
vi server.xml
#Executor 설정
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="300" minSpareThreads="25" maxIdleTime="60000"/>
#Connector 설정
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
maxThreads="150"
minSpareThreads="25"
redirectPort="8443"
maxParameterCount="1000"
/>
#저장후 종료
:wq!

설정은 conf/server.xml 에 설정합니다.
Executor 설정, Connector 설정을 해주시면됩니다.
*설명
maxThreads 톰캣이 동시에 처리할 수 있는 최대 스레드 수 200
minSpareThreads 유지할 최소 유휴(Idle) 스레드 수 10
acceptCount maxThreads 도달 후 추가 요청을 대기할 큐 크기 100
executor 여러 커넥터가 공유할 중앙 관리 스레드 풀 설정
커넥터 프로토콜 설정
1. protocol="HTTP/1.1" (기본 프로토콜 설정값)
동기 Blocking I/O (BIO) 방식
1개의 커넥션에 1개의 스레드 할당하는 방식
2. protocol="org.apache.coyote.http11.Http11NioProtocol" (고성능 동시 접속자가 많을때 유리)
비동기 I/O(Non-blocking I/O) 처리를 통한 서버 효율성 향상
별도의 쓰레드를 관리 하며
데이터를 읽거나 쓰는 작업이 실제로 발생할 때만 스레드가 할당
Executor 에 설정한 값들을 Connector 들이 가져다가 사용한다고 보시면 될거같습니다.
저는 중앙 관리 쓰레드 갯수를 300개로 잡았고
커넥터에서 150개를 사용 한다고 설정해주었습니다.
커넥터를 2개 사용하시는분들
ex)
8080, 8090 으로 2개 사용하고 있다면
중앙관리에 300개,
커넥터1 에 150개 커넥터 2에 150개
총 300개를 사용하면 될거같습니다.
예시이고 보통은 커넥터를 한개씩 사용하니 적절한 수치를 정해주시면 될거같습니다.
*설정 확인 방법
Thread pool 설정이 잘되어 있는지 몇개가 적용되어 있는지는
tomcat manager을 이용해서 확인 할수 있습니다.
conf/tomcat-users.xml 에 manager 사용 설정을 해주셔야 확인할수 있습니다.
pwd
/home/hunhee/tomcat-9/conf
vi tomcat-users.xml
#매니저 사용 추가
#user username="id"에 원하는 아이디, user passwd="pw"에 사용할 비밀번호
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui, manager-script, manager-jmx, manager-status"/>
<user username="deployer" password="deployer" roles="manager-script"/>
<user username="tomcat" password="admin" roles="manager-gui"/>
#저장후 종료
:wq!

이렇게 설정을 해주시고 tomcat 재기동후에
ip:port/manager/status 으로 호출해주시면
매니저 화면 접속이 가능합니다.

저희가 설정한 아이디와 비밀번호를 치고 접속을하면
tomcat 버전과 jdk 버전 운영체제 등 정보들이 나오고

제일 하단에 최대 쓰레드 개수가 나옵니다.
저는 위에 커넥터 설정에
maxThreads 200, minSpareThreads 25 설정해주었습니다.
최대 쓰레드 개수 200, 현재 쓰레드 개수 25 로 설정이 잘 들어간걸 볼수있습니다.
최대 쓰레드 개수를 150개로 유지할 개수를 15개로 줄여 보고 재기동 해보겠습니다.

커넥터 설정을 변경해주고 재기동 했습니다.

최대 쓰레드 개수 150 현재 쓰레드 개수 15개로 설정이 잘 들어가는걸 볼수 있습니다.
'WEB,WAS 및 기술' 카테고리의 다른 글
| java.net.BindException : Address already in use bind 에러 Tomcat 자주 보는 에러들 (0) | 2026.01.29 |
|---|---|
| 초보자 리눅스 명령어들 (0) | 2026.01.28 |
| tomcat context path 잡기 및 apache 분기처리 (0) | 2026.01.23 |
| 리눅스 nginx_upstream_check_module 설치 (0) | 2026.01.21 |
| [WEB/WAS] Tomcat 장애시 제일먼저 확인 하는것 (0) | 2026.01.20 |