spring + was(tomcat)환경에서 tomcat 스레드풀에서 요청당 스레드를 할당하고
해당 스레드가 db에 접근할 일이 있다면 커넥션 풀의 커넥션 하나를 할당받을것이고
이 커넥션은 DB의 포그라운드 스레드와 이미 1:1 매핑이 되어 준비되어있는 것으로 알고 있습니다. (mysql 기준, 스레드풀을 사용하지 않을 때)
1. 위 내용 중 틀린게 있나요??
2. 보통 톰캣 스레드 갯수보다 적거나 같은 갯수의 커넥션을 커넥션풀에서 만들어 두는 것으로 알고 있습니다.
그렇다면 커넥션풀의 커넥션 갯수 이상의 스레드가 커넥션을 요청하는 상황이 있을 수 있을 것 같은데
이 때 커넥션을 더 생성하는게 아니라 대기하는거 아닌가요?
3. 2번이 맞다면 db입장에서 커넥션풀의 커넥션 갯수 이상의 포그라운드 스레드가 필요한 상황이 존재하나요?
4. 3번의 답이 "필요없다"라면 DB 스레드풀을 사용하는 이유는 뭘까요?
ㄴ ㅇ ㄴㄴ엥간해선 생각보다 생성관리에 비용많이듬 - dc App
커넥션풀의 커넥션이 되어있는 시점에서 이미 포그라운드 스레드는 생성되어 있는거 아닌가요? 그 스레드가 캐시에 있든 새로 생성한 스레드이든 스레드풀에 있든 그게 상관이 있나요?
ㅇㅇ.. 오버헤드생각하면 차이많지 - dc App
생성하고 쓰레드매핑은 좀 다른디 쓰레드매핑은 능동적으로 - dc App
글쓴이가 댓글에 단 질문이 잘 이해가 안가는데. 1. 커넥션풀의 커넥션이 되어있는 시점에서 이미 포그라운드 스레드는 생성 되어 있는 것이 아닌가요? -> 맞음. 그런데 포그라운드 스레드가 만들어져 있다는 것 자체가 이미 포그라운드 스레드풀을 사용하고 있다는 것. 왜냐하면 스레드풀이 포그라운드 스레드를 만드는 것으로 알고있음.
ㄴ1.236 스레드는 생성될때 사용되는게 아니라 대기상태일꺼임 스레드풀이 1:1스레드매핑일 이유가없음 - dc App
ㄴ 223.62 대기 상태라는 말이 스레드풀이 스레드를 생성하고 나서 사용하지 않고 그저 저장된 상태를 말하는 거임? 그런데 스레드풀이 1:1 스레드매핑일 이유가 없다는 말이 무슨 의미인지 궁금함
저장된 상태고 말 그대로 동적매핑 - dc App
ㅇㅎ 디비의 (쓰레드풀에 저장된) 대기 상태의 포그라운드 쓰레드와 웹서버의 커넥션이 랜덤하게 동적으로 매핑된다는 의미인거지? ㄱㅅ
참고로 기본설정은 1:1매핑인것도이씀 mysql이 11매핑이였나 - dc App
mysql은 스레드풀을 기본적으로 사용안해요
뇌피셜론 쓰레드의 총 개수같은걸 지정하지 않을까 싶음.. 커넥션풀의 개수만큼 포그라운드 쓰레드를 생성하게 지정해놓으면 쓰레드가 무분별하게 생성되는걸 막을 수 있으니까. 근데 어처피 이런식으로 막아놓을바에 미리 만든걸 사용하면 이득이니까 쓰레드풀을 도입하는거고. 그리고 일대일 고정적으로 커넥션과 쓰레드를 연결하진 않을거 같다.. 굳이 그렇게 할 필요를 못느꼈을거 같음 내가 만들었다면 - dc App
차에코 말 듣고 찾아보니 mysql은 기본적으로 쓰레드풀이 아닌 쓰레드캐시 방식을 사용하네? 내 위에 댓글들에 잘못된 내용이 있는듯. 쓰레드 캐시 방식은 디비에 요청이 올 때, 쓰레드 캐시에 스레드가 있으면 그걸 사용하고, 없으면 스레드를 생성함. 생성 후 사용을 완료하면 스레드캐시에 넣어주는 방식이래. 이런 방식으로 쓰레드풀 없이 다중 쓰레드를 지원한대
ㄴ118.235 실제로 디비에서 무한정 스레드가 생성되어 성능이 저하되는 문제 때문에 쓰레드풀의 총 개수를 지정한다고 알고있음. 동일한 이유로 mysql의 스레드캐시에서도 상한을 정해둔대
커넥션 맺는 비용이 커서 매 요청마다 생성하는 것보다 스레드풀로 미리 생성해두는 게 싸게 먹히기 때문
내가 틀린걸수도 있는데, 데이터베이스와 커넥션풀은 단순히 연결을 미리해놓은거고 데이터베이스의 서버의 포그라운드 쓰레드는 할당받은 상태가 아닌거 아님? - dc App
요청을 해야 쓰레드가 할당되는거고 - dc App
아무리 생각해봐도 이건데.. 포그라운드 쓰레드를 미리 일대일로 매핑시켜놓는다는건 커넥션풀의 1번 커넥션이 1번 포그라운드 쓰레드를 사용한다는걸 고정으로 해놨다는건데 그럼 쓰레드풀이 처음부터 안나오지 않았을까 - dc App
그리고 쓰레드풀의 쓰레드를 다 썼다고 무조건 무한정 대기하진 않음. 일정 시간 지나면 새로운 쓰레드를 생성하기도 함 - dc App
새로운 쓰레드 생성되는 경우는 누구였는지 기억안나는데 강의자가 극히드문 케이스고 그럴때는 구조적 해결을 권했는데 - dc App