Web Application (2)

SIHA·2025년 1월 23일

Thread

Thread; 프로세스 내에서 실행되는 흐름의 단위

thread는 한 번에 하나의 코드 라인만 수행하므로 동시 처리에는 추가 생성이 필요하다.

Single Thread

단일 요청


1. 클라이언트 요청 및 TCP/IP 연결
2. Thread 할당 후 Servlet 호출
3. 응답 후 Thread 반환

동시 요청


1. 첫번째 요청의 작업을 Single Thread가 수행,
2. 두, 세번째 요청이 들어오고 연결을 완료
3. Thread를 사용하기 위해 작업이 끝날때까지 대기
4. 요청이 모두 사라질 때까지 작업 반복 (대기→작업수행→스레드 반환)

※ 첫번째 요청의 작업이 지연되거나 Error가 발생할 경우,

=> 모든 요청이 Time out 오류 발생

Multi Thread

Multi thread; 둘 이상의 스레드를 동시에 실행하는 방식

동시 요청이 발생한 경우, single thread 방식은 작업의 지연이나 서버에 문제가 발생할 시 다른 요청에도 영향을 미칠 수 있다.

Multi Thread의 동시 요청 처리

  1. 요청마다 새로운 Thread 생성

    요청이 들어올 때마다 Thread 생성, 처리가 완료되면 종료한다.
    장점
  • 동시 요청 처리
  • 하나의 Thread에 문제가 발생해도 다른 Thread는 정상 작동함
    단점
  • Thread 생성에 제한이 없고 생산 비용이 높음,
    수많은 동시 발생에 리소스 부족으로 서버가 다운될 수 있음
  • Context Switching 비용이 발생
  1. Thread Pool

    요청이 들어오면 Thread Pool에서 Thread들 받아 사용하고 완료 후에는 반납함
    Thread가 모두 사용 중일 경우, Thread가 생길 때까지 대기하거나 거절할 수 있음

WAS에서의 Multi Thread

WAS는 Multi Thread를 지원한다.
Multi Thread환경이므로 싱글톤 객체(Servlet, Spring Bean)는 주의해서 사용해야 함

profile
뭐라도 해보자

0개의 댓글