Engineering Note

[Sever] 스프링 부트 쓰레드, DB 커넥션 본문

Server

[Sever] 스프링 부트 쓰레드, DB 커넥션

Software Engineer Kim 2025. 9. 4. 15:23

스프링 부트는 WAS Tomcat을 내장하고 있고 HTTP 요청을 멀티쓰레딩으로 방식으로 처리 할 수 있다.
사용자의 요청이 오면 쓰레드를 통해 처리한다. 이때 DB 요청이 필요한 로직이 있다면 DB 커넥션을 통해 DB에 쿼리를 통해 데이터를 조회하거나 업데이트한다.

톰캣 최대 쓰레드보다 사용자의 요청이 많다면 요청된 쓰레드가 반환 될때 까지 큐에 대기하가가 자신의 순서가 되면 요청이 처리된다.
마찬가지로 DB 커넥션 풀보다 DB에 요청할 커넥션이 많다면 이미 사용중인 커넥션이 반환될 때까지 대기하고 커넥션을 사용할 수 있다.
DB 커넥션은 DB에 요청할 때 WAS의 힙메모리와 DB 서버의 각 커넥션에 대한 세션정보를 관리하기 위해 메모리를 사용한다.

그래서 DB 서버의 메모리용량과 커넥션 사용시 필요한 메모리용량을 고려해서 커넥션 풀을 설정해야한다. 그래서 커넥션 풀의 크기는 WAS의 쓰레드 수와 비슷한 수준으로 설정하거나 애플리케이션의 특성에 따라 조정한다.(DB 작업이 얼마나 자주 일어나는지, 길게 일어나는지 등)

Comments