동시 요청

seonh0·2023년 2월 27일
0

Spring

목록 보기
1/1

Servlet - 동시 요청 멀티쓰레드 처리를 지원함


WAS에서 연결마다 쓰레드를 만들게 되면

  • 응답속도 감소와 Context Switching 비용도 생각을 해야함
  • 제한이 없는 경우에 CPU, 메모리 임계점을 초과해서 서버가 다운될 가능성도 존재함.

Thread Pool 방식

  • 위의 단점을 보완하기 위해서 미리 쓰레드를 생성하고 풀에 대기시켜둠.
  • 톰캣 기준 하나의 쓰레드 풀에 200개의 쓰레드 생성 가능.

WAS의 주요 튜닝포인트

  • 최대 쓰레드 수를 잘 설정해야함.
  • 낮은경우 -> 많은 요청이 오게 된다면 요청에 대한 응답에 지연시간 발생.
  • 높은경우 -> CPU, 메모리 리소스 임계점을 초과해서 위와 같은 서버다운이 발생가능함.
  • 장애가 발생한다면 ? 클라우드의 경우엔 서버증설 후에 튜닝 / 클라우드가 없다면 평소에 튜닝을 잘해야 한다.

쓰레드 풀의 적정 숫자

  • 대략적으로 감을 잡는거다.
  • 성능테스트를 통해서 찾아가는 방식으로 시도 ex) 아파치 ab, 제이미터, nGrinder

WAS의 멀티 쓰레드 지원

  • 개발자가 따로 멀티 쓰레드 관련 코드를 신경쓰지 않아도 괜찮음 -> 싱글 쓰레드처럼 개발
  • 단 싱글톤 객체(서블릿, 스프링 빈)는 주의해서 사용해야한다.

출처 : 인프런 ( 김영한 - 스프링 MVC 1편 )

profile
1111

0개의 댓글