본문 바로가기
백엔드(Back End)/Spring

[TIL]20230828 - 톰캣 튜닝

by tjsdn9803 2023. 9. 5.

멘토링 시간 중 멘토님이 성능 향상을 위한 여러 방법을 소개해주셨는데 톰캣 튜닝, HikariCP 튜닝 등의 방법을 알려주셨다

톰캣 튜닝은 WAS인 톰캣을 튜닝하여 성능을 높이는것이고 HikariCP란 Springboot 2.0 부터 default로 설정되어 있는 DB Connection Pool을 튜닝하여 성능을 높이는 것이다.

나는 톰캣을 튜닝을 담당하여 이에 대한 정보와 성능을 향상시키는 방법에 대해 알아보았다.

톰캣의 설정 정보를 변경하는 방법에는 여러가지가 있다. 찾아본 결과 스프링부트 이전 스프링에서는 xml파일로 설정 정보를 바꾸기도 하였고 직접 톰캣 서버를 구축하는 경우도 있었다. 

우리는 스프링 부트를 사용하고 스프링부트는 내장 톰캣서버를 기반으로 실행되기 때문에 application.properties에 설정정보를 수정하여 변경하였다.

스프링 공식 문서(Appendices / Appendix A:CommonApplication Properties / A.11 Properties)

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#appendix.application-properties.server

 

Spring Boot Reference Documentation

This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe

docs.spring.io

톰캣에 관한 모든 설정 정보는 위의 스프링 공식문서에서 확인할 수 있다.

여러가지 설정 정보중 acceptCount, maxConnections, maxThreads에 대해 알아보고 튜닝을 진행하였다.

maxConnections

서버가 허용하고 처리할 수 있는 최대 연결 개수를 의미한다. 만약 서버의 연결 개수가 maxConnections 에 도달하면, 서버는 계속 요청을 수락하지만 처리는 하지 않는다. 처리중인 연결 개수가 maxConnections 아래로 내려가야 비로소 서버는 다시 연결에 대한 작업을 시작한다.

단, 연결 개수가 maxConnections 에 도달했다고 하더라도, 운영체제는 acceptCount 설정 만큼 추가로 연결을 수락한다.

accpetCount

들어오는 연결 요청이 maxConnections 에 도달했을 때 들어오는 요청의 대기열(queue) 길이를 의미한다. 일반적으로 이 큐에 메시지가 쌓여있다는 것은 톰캣이 요청을 처리할 수 있는 유휴 쓰레드(idle thread)가 없다는 의미이며, 이미 장애가 발생했을 확률이 높다.

이 대기열이 가득 차면, 운영체제가 요청을 거부하거나 연결이 타임아웃 될 수 있다.

maxThreads

톰캣 내의 쓰레드 최대 개수를 결정하는 설정이다. 이때, 쓰레드 수는 실제 Active User 수 이다.

전체적인 구조는 다음과 같다.

 

설정하는 방법은 application.properties에 다음과 같이 입력해주었다.

server.tomcat.accept-count=
server.tomcat.max-connections=
server.tomcat.threads.max=

각 설정의 기본값은 각각 100, 8192, 200이며 원하는 숫자를 입력하여 설정을 바꿀 수 있다.

-참고-

https://bcho.tistory.com/788

 

Apache Tomcat Tuning (아파치 톰캣 튜닝 가이드)

톰캣 튜닝조대협 이번에는 톰캣 서버에 대한 튜닝 옵션에 대해서 한번 알아보자.애플리케이션 관점에서의 튜닝도 중요하지만, 각 솔루션에 대한 특성을 업무 시나리오에 맞춰서 튜닝하는 것도

bcho.tistory.com

https://hudi.blog/tomcat-tuning-exercise/

 

톰캣 튜닝 맛보기 - maxConnections, acceptCount, maxThreads

학습 배경 우아한테크코스 레벨4 Thread 활용하기 실습을 진행하며, 톰캣의 acceptCount , maxConnections , maxThreads 설정을 변경해보며 튜닝을 찍먹해보았다. 톰캣이 멀티 쓰레드 환경에서 여러 요청을 어

hudi.blog