[Spring] tomcat 설정의 동작 원리(max-connections, accept-count, threads.max)

2025. 7. 3. 01:04·Spring Framework/Spring
반응형

Spring Boot로 웹 애플리케이션을 개발하면서 application.yml에 있는 Tomcat 설정들을 본적은 있지만 별 생각 없이 무심하게 지나쳤다. 하지만 이 설정들이 정확히 무엇을 의미하고, 어떤 역할을 하는지 궁금해 졌다.

server:
  tomcat:
    max-connections: 8192
    accept-count: 100
    threads:
      max: 200

본 포스팅에서는 Tomcat의 세 가지 핵심 설정인 accept-count, max-connections, threads.max가 클라이언트 요청을 처리하는 과정에서 각각 어떤 역할을 하는지 정리했다.

설정들의 역할

그 전에 알아야 할 것

  • HTTP는 TCP를 기반으로 동작한다
  • 클라이언트와 서버간 연결을 위해 3-hand-shake가 이루어진다
    • 클라이언트가 SYN을 보냄
    • 서버가 SYN-ACK로 응답
    • 클라이언트가 ACK로 확인
    • 이 과정을 통해 양쪽 모두 통신 준비가 되었음을 확인
  • 톰캣은 클라이언트와의 소켓 연결부터 처리를 위한 요청 처리를 위한 스레드할당까지 수행한다.
  • 이 과정에 위 설정들이 필요한 것이다.

server.tomcat.accept-count

  • OS의 Accept Queue 크기 설정
  • 3-way handshake 중 SYN 수신 시 체크
  • accept-count 초과 하면 클라이언트는 Connection refused 받는다.
  • Tomcat이 accept()하기 전 연결들이 대기하는 공간

server.tomcat.max-connections

  • 톰캣에서 유지하는 클라이언트의 최대 연결 수
  • 톰캣과 연결되었다는 건?
    • 클라이언트와 서버가 TCP 3-way handshake를 정상적으로 완료한 다음
    • 톰캣에서 accept()를 호출해 연결된 클라이언트의 소켓을 가져온다.
    • 소켓을 통해 클라이언트와 데이터를 주고 받을 수 있다.
  • Tomcat은 최대 max-connections 개수만큼만 동시에 관리한다.
  • max-connections 도달 시
    • Acceptor 스레드는 accept() 호출을 멈추고 대기한다.
    • 새 연결들은 Accept Queue에서 대기한다.
    • 기존 연결이 종료되면 Acceptor 스레드가 accept() 호출을 재개한다.

server.tomcat.threads.max

  • 실제 HTTP 요청을 처리하는 Worker Thread 수
  • accept()된 소켓을 Worker Thread에 할당한다.
  • threads.max 도달 시
    • 소켓은 Connection Pool에 유지된다.
    • Worker Thread가 생길 때까지 대기한다.
    • 대기 시간이 길면 Read Timeout 발생한다.

요약

  • accept-count : 연결 대기열의 크기
  • max-connections : 동시 유지 가능한 연결 수
  • threads.max : 실제 요청을 처리하는 작업 스레드 수

이 설정들은 서로 연관되어 있으며, 하나의 설정만 늘린다고 해서 전체 처리량이 증가하지 않는다. 각 단계의 병목 지점을 파악하고 균형있게 조정하는 것이 중요하다.


TCP 연결부터 요청 처리까지의 전체 흐름을 따라가며 각 설정이 어떻게 동작하는지 공부할 수 있었다.

반응형
저작자표시 비영리 변경금지 (새창열림)
'Spring Framework/Spring' 카테고리의 다른 글
  • [Spring] 트랜잭션과 동시성
  • [Spring Batch] 메타 데이터 테이블 정리
  • [Spring Batch] skip / retry
  • [Spring Boot] 자동 설정(Auto Configuration)
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (129)
      • Spring Framework (13)
        • Spring (7)
        • JPA (4)
        • Spring Security (0)
      • Language (52)
        • Java (12)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (3)
      • 프로젝트 (3)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    C
    Unreal Engine
    Python
    언리얼엔진4
    딥러닝
    MySQL
    게임
    게임 개발
    redis
    select
    클래스
    pytorch
    NUXT
    JS
    프로그래머스
    PS
    memcached
    자바
    웹
    블루프린트
    Unreal
    알고리즘
    파이썬
    C++
    FPS
    CPP
    map
    mscoco
    JavaScript
    php
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
[Spring] tomcat 설정의 동작 원리(max-connections, accept-count, threads.max)
상단으로

티스토리툴바