스프링 MVC - 멀티 쓰레드

2025. 4. 6. 04:49·Java & Spring/Spring

□ 쓰레드

  • 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드
  • 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행
  • 쓰레드가 없다면 자바 애플리케이션 실행이 불가능
  • 쓰레는 한번에 하나의 코드 라인만 수행
  • 동시 처리가 필요하면 쓰레드를 추가로 생성

- 요청 마다 쓰레드 생성

  1. 장점
    • 동시 요청을 처리
    • 리소스가 허용할 때 까지 처리가능
    • 하나의 쓰레드가 지연 되어도, 나머지 쓰레드는 정상 동작
  2. 단점
    • 쓰레드 생성 비용은 매우 비쌈
    • 요청 마다 쓰레드를 생성하면 응답 속도가 늦어짐
    • 쓰레드는 컨텍스트 스위칭 비용이 발생
    • 쓰레드 생성에 재한이 없기 떄문에 요청이 너무 많이 오게 되면 임계점을 넘어 서버가 죽을 수 있음

- 쓰레드 풀

  1. 특징
    • 필요한 쓰레드를 쓰레드 풀에 보관하고 관리
    • 쓰레드 풀에 생성 가능한 쓰레드의 최대치를 관리, 톰캣은 최대 200개 기본 설정
  2. 사용
    • 쓰레드가 필요하면, 이미 생성되어 있는 쓰레드를 쓰레드 풀에서 꺼내서 사용
    • 사용을 종료하면 쓰레드 풀에 해당 쓰레드를 반납
    • 최대 쓰레드가 모두 사용중이라면 거절 혹은 대기하도록 설정
  3. 장점
    • 쓰레드가 미리 생성되어 있으므로, 쓰레드를 생성하고 종료하는 비용이 절약되고, 응답 시간이 빠르다.
    • 생성 가능한 쓰레드의 최대치가 있으므로 너무 많은 요청이 들어와도 기존 요청은 안전하게 처리할 수 있다.

※  실무 Tip.

  • WAS의 주요 튜닝 포인트는 최대 쓰레드 수이다.
  • 이 값을 너무 낮게 설정하면 서버 리소스는 여유롭지만 클라이언트는 금방 응답 지연이 발생
  • 이 값을 너무 높게 설정하면 리소스 임계점 초과로 서버 다운
  • 장애 발생 시 클라우드면 일단 서버를 늘리고, 아니라면 튜닝

'Java & Spring > Spring' 카테고리의 다른 글

스프링 MVC - 기본기능  (0) 2025.04.18
스프링 MVC - 구조 분석  (0) 2025.04.14
스프링 MVC - 웹 애플리케이션의 이해  (0) 2025.04.06
Spring - Spring Security  (1) 2024.10.07
JPA - Querydsl 사용법 및 실습  (0) 2024.10.04
'Java & Spring/Spring' 카테고리의 다른 글
  • 스프링 MVC - 기본기능
  • 스프링 MVC - 구조 분석
  • 스프링 MVC - 웹 애플리케이션의 이해
  • Spring - Spring Security
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 이론공부 N
        • 정보처리기사
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java this
    java 세수의합
    Java 생성자
    개발로드맵
    java기초
    java arrays.copyofrnage()
    프로그래머스 java 기초트레이닝
    java 에라토스테네스의 체
    데이터 타입
    java 메서드
    자료구조
    프로그래머스 java 기초 트레이닝
    java 유클리드 호제법
    java 제어자
    java
    java two-pointer
    java enhance switch
    데이터 크기
    java 멤버
    java super
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
스프링 MVC - 멀티 쓰레드
상단으로

티스토리툴바