스프링/3. 스프링 MVC

3. 멀티쓰레드

sdafdq 2023. 8. 1. 23:27

쓰레드 하나만 사용 시. 요청이 오면 쓰레드 할당

쓰레드란 코드를 한줄 한줄 순차적으로 실행하는 게 쓰레드

 

동시처리가 필요하면 추가로 쓰레드 생성

 

 

 

다중 요청 시 쓰레드 하나일 경우

이래서 막 몰리는 서버 들어가면 저거 순차적으로 응답 대기하느라 그럼. 저러다 타임아웃..

 

 

 

요청마다 쓰레드 새로 생성하여 처리

이것도 장단점이 있음

단점은 쓰레드 생성 비용이 비쌈.

그리고 멀티쓰레드 라고 해서 이것도 사실 동시에 처리하는게 아니라 코어가 순차적으로 처리 하는거임. 근데 이 스윗칭 할 때도 비용이 있음.

또 쓰레드 생성에는 제한이 없어서, 하드웨어 임계점을 넘어버리면 서버 죽을 수 있음

 

 

그래서 방법이

그 풀 맞음. 객체 삭제는 너무 비용이 많이 드니, 미리 만들어 놨다가 요청 들어올 때 현재 동작중이지 않은 쓰레드 찾아서 동작시키는 거.

 

 

없으면 이렇게 거절 시켜버릴 수 있음. 아니면 대기 시키거나.

 

보통 톰캣은 200개 무난.

 

 

근데, 서비스, 하드웨어에 따라 다름.

적정 사이즈를 찾아야 함.

최대한 실제 서비스와 같은 환경에서 성능 테스트를 해봐야 함.

 

nGrinder 같은 네이버 툴도 좋음

 

WAS는 멀티쓰레드를 손쉽게 제공해 줌.

 

단, 싱글톤이므로 멀티쓰레드로 사용할 때는 주의 해야 함. (근데 그냥 flag 하나 멤버로 달아두면 되는 거 아닌가?)

'스프링 > 3. 스프링 MVC' 카테고리의 다른 글

7. Hello Servlet  (0) 2023.08.03
5. 자바 웹 기술 발전 역사  (0) 2023.08.03
4. 서버의 클라이언트에게 제공 방식  (0) 2023.08.02
2. 서블릿  (0) 2023.08.01
1. 웹 서버, 웹 애플리케이션 서버  (0) 2023.08.01