hana78786.log
로그인
hana78786.log
로그인
동시요청 멀티 쓰레드
hanahana
·
2023년 3월 16일
팔로우
0
multithread
0
spring 스터디
목록 보기
3/5
쓰레드
서블릿 객체를 호출한다.
어플리케이션 코드를 순차적으로 실행하는것
쓰레드가 없다면 자바 어플리켘이션이 실행이 불가능하다
쓰레드는 한번의 하나의 코드라인만 수행한다
동시처리가 필요하면 쓸드를 추가로 생성한다.
단일요청 - 하나의 쓰레드 사용
한개의 요청을 처리하고 쓰레드는 종료한다
다중요청
요청을 하는 도중 처리가 지연됐을때 두번째 요청이 들어올경우
이 경우 요청 두개가 모두 수행할수 없게된다.
요청마다 쓰레드 생성
이런 문제를 해결하기위해 오쳥마다 쓰레드를 생성하여 요청을 처리한다.
장점
동시 요청처리가능
리소스가 혀옹될떄까지 처리가능
지연되어도 다른 요청처리 가능하다
단점
생성 비용이 비싸고 응답속도가 늦어진다
컨텍스트 스위칭 비용이 발생하다.
너무 많은 생성으로 cpu와 메모리가 임계점을 점어 서버가 죽을수있다.
쓰레드 풀
쓰레드 풀안에 쓰레드를 미리 만들어두어 사용한다.
사용이 끝난 쓰레드를 종료시키지 않고 쓰레드 풀에 대기 시켜 쓰레드의 생성을 하지 않는다.
쓰레드풀보다 많은 요청이 들어왔을때 그 요청들을 대기 시키거나 요청을 거절할수있다.
장점
쓰레드를 생성, 종료하는 비용이 절영되며 응답시간이 빠르다
최대치가 정해져있기때문에 기존요청을 안전하게 처리가능하다.
실무팁
was의 주요 투닝 포인트는 최대 쓰레드의 수이다
너무 낮게 설정하면 리소스는 여유가있지만 응답이 느려진다.
너무 높게 설정하면 cpu 메모리 리소스의 임계정 초가로 서버가 다운된다.
적정숫자는?
어플리케이션 로직의 복잡도, cpu, 메모리 io리소스상황에 따라 모두 다르다
성능테스트를 하여 적정숫자를 파악해야 한다
최대한 실제 서브스와 유사하게 테스트헤야한다
아파치, ab 제이미터, nGrinder
핵심
멀티스레드는 was가 처리하여 멀티스레드 관련 코드를 신경쓰지 않아도 된다.
멀티스레드환경이기때문에 싱글톤객체(서빌릿, 스프링빈)는 주의해서 사용해야 한다.
hanahana
hello world
팔로우
이전 포스트
서블릿
다음 포스트
HTTP HTTP API CSR SSR
0개의 댓글
댓글 작성