동시 요청 처리, 멀티 스레드, 스레드 풀

Louie·2023년 1월 1일
0

동시 요청 처리 방법, 문제점

  • 멀티 스레드를 사용하여 동시 요청 처리를 지원할 수 있다.
  • 간단하게 요청마다 스레드를 생성하면 동시에 여러 요청을 처리할 수 있다.
  • 하지만 스레드의 생성 비용은 매우 비싸고 요청이 많이 들어온다면 서버 자원이 부족해서 스레드를 계속 생성하다가 서버가 죽을 수 있다.
  • 이러한 문제를 해결하기 위해 스레드 풀을 사용한다.

스레드 풀

  • WAS는 스레드 풀을 사용하여 동시 요청 처리를 지원한다.
  • 스레드 풀에 미리 스레드를 생성해놓고 요청마다 스레드 풀에 남아있는 스레드를 할당해 준다.
  • 요청이 완료되면 해당 스레드를 종료시키지 않고 다른 요청이 들어왔을 때 스레드 풀에서 다시 클라이언트에게 할당하는 방식으로 재활용한다.
  • 스레드 풀에 남은 스레드가 존재하지 않으면 대기 중인 요청을 거절하거나 설정한 개수만큼 대기하도록 설정할 수 있다.

스레드 풀의 장점

  • 이렇게 스레드 풀을 사용하면 스레드를 계속 재활용하기 때문에 스레드를 삭제하고 다시 생성할 때 드는 비용을 아낄 수 있어서 응답 시간이 빨라진다.
  • 그리고 스레드 생성 개수를 설정할 수 있으므로 많은 요청이 들어와도 기존 요청을 안전하게 처리할 수 있다.

스레드 풀의 적정 개수

  • 환경에 따라 다르므로 성능 테스트를 통해 적정 개수를 구해야 한다.
profile
백엔드 개발자를 준비하고 있는 Louie입니다.

0개의 댓글