WEB,WAS 및 기술

Tomcat Thread pool 설정 및 확인 방법

hunhee44 2026. 1. 26. 12:44

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!

 

server.xml에 Thread 설정
server.xml에 Thread 설정

 

설정은 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 manager 사용
tomcat manager 사용

 

이렇게 설정을 해주시고 tomcat 재기동후에 

ip:port/manager/status 으로 호출해주시면 

매니저 화면 접속이 가능합니다.

tomcat manager 화면
tomcat manager 화면

 

저희가 설정한 아이디와 비밀번호를 치고 접속을하면

tomcat 버전과 jdk 버전 운영체제 등 정보들이 나오고

 

 

tomcat manager 화면
tomcat manager 화면

제일 하단에  최대 쓰레드 개수가 나옵니다.

저는 위에 커넥터 설정에 

maxThreads 200, minSpareThreads 25 설정해주었습니다.

최대 쓰레드 개수 200, 현재 쓰레드 개수 25 로 설정이 잘 들어간걸 볼수있습니다.

 

최대 쓰레드 개수를 150개로 유지할 개수를 15개로 줄여 보고 재기동 해보겠습니다.

커넥터 설정변경
커넥터 설정변경

 

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

변경 후 쓰레드 개수
변경 후 쓰레드 개수

 

최대 쓰레드 개수 150 현재 쓰레드 개수 15개로 설정이 잘 들어가는걸 볼수 있습니다.