728x90
반응형
스프링의 다중 요청 처리
우선 스프링은 멀티쓰레딩 환경입니다.
그렇기 때문에 동시에 발생하는 여러 요청에 대해서 여러 쓰레드로 나눠서 비동기로 요청을 처리할 수 있습니다.
그러면 스프링에서 멀티쓰레딩을 어떻게 지원할까요?
스프링 내장 서블릿 컨테이너 Tomcat
스프링은 기본적으로 설정된 서블릿 컨테이너로 내장 웹서버인 Tomcat을 사용합니다.
이 Tomcat에서 멀티쓰레딩을 지원하기 위한 쓰레드풀을 기본적으로 생성해서 관리합니다.
쓰레드풀이란 쓰레드를 생성하고 제거하는데 드는 컨텍스트 스위칭과 같은 오버헤드를 줄이기 위해 미리 쓰레드를 만들어두고 관리하는 패턴입니다.
이 쓰레드풀의 쓰레드들을 통해 비동기 요청을 처리합니다.
Tomcat 쓰레드풀 기본 설정
server:
tomcat:
threads:
max: 200
min-spare: 10
max-connections: 8192
accept-count: 100
connection-timeout: 20000
Tomcat의 기본 쓰레드풀 설정입니다.
- max: 이 값은 톰캣에서 사용할 수 있는 최대 스레드 수를 나타냅니다. 즉, 이 기본 설정에 따르면 최대 200개의 스레드가 풀에 있을 수 있습니다.
- min-spare: 이 값은 풀에 유지될 최소한의 유휴 스레드 수를 나타냅니다. 이것은 톰캣이 스레드를 다시 생성하는 오버헤드를 줄이기 위해 필요한 최소 스레드 수를 보장합니다.
- max-connections: 이 값은 서버가 허용하는 최대 연결 수를 나타냅니다. 즉, 기본적으로 동시에 처리할 수 있는 최대 연결 수가 8192개입니다.
- accept-count: 이 값은 서버가 동시에 처리할 수 있는 연결 요청의 최대 대기 큐 크기를 나타냅니다. 즉, 이 기본 설정에 따라 최대 100개의 연결 요청이 대기열에 들어갈 수 있습니다.
- connection-timeout: 이 값은 연결 시간 초과(ms)를 나타냅니다. 서버가 클라이언트와의 연결을 설정하는 데 허용되는 최대 시간입니다. 기본적으로는 20,000 밀리초(20초)로 설정되어 있으므로, 클라이언트가 연결을 설정하는 데 20초 이상 소요되면 연결이 중단됩니다.
728x90
반응형
'Develop(개발)' 카테고리의 다른 글
[AWS] 프리티어 VPC 과금 문제 해결법 (RDS Public IP 없이 MySQL 워크벤치 연결) (0) | 2024.07.18 |
---|---|
스프링 동시성 문제 해결법의 종류와 장단점 (3) | 2024.03.17 |
Github Action에서 간단한 테스트 자동화 하기! (4) | 2024.02.25 |
vscode 터미널에서 실행하는 환경변수 직접 설정하는 방법 (0) | 2023.10.03 |