본문 바로가기
Back-End/Database

데이터베이스 커넥션 풀 미사용 시 발생 문제

by 코젼 2025. 3. 28.
728x90
반응형

애플리케이션데이터베이스통신을 하기 위해서는 데이터베이스 커넥션이 필요하다.

데이터베이스 커넥션의 생애주기 :

  1. 데이터베이스 드라이버를 사용하여 데이터베이스에 연결
  2. 데이터 읽기/쓰기를 위한 TCP 소켓 열기
  3. 소켓을 통한 데이터 읽기/쓰기
  4. 연결 종료
  5. 소켓 닫기

커넥션 풀이 없다면 애플리케이션에서 데이터베이스에 접근해야하는 요청을 처리할 때마다 커넥션을 새로 생성하여 연결하고 해제하는 과정을 반복해야 한다. 이 과정은 비용이 상당히 많이 들기 때문에 요청응답시간이 길어진다.

또 동시에 많은 요청이 들어올 경우 매번 새로운 커넥션을 생성하게 되는데, 데이터베이스의 최대 연결 수를 초과할 수 있다. 데이터베이스는 일반적으로 동시에 처리할 수 있는 요청 개수에 제한이 있는데, 이 제한을 초과하면 요청이 거부되어 사라지거나, 데이터베이스 자체가 비정상 종료될 수 있다.

커넥션 풀의 주요 구성 요소

  • 초기 풀 크기(Initial Pool Size)
  • 최소 풀 크기(Minimum Pool Size)
  • 최대 풀 크기(Maximum Pool Size)
  • 연결 대기 시간(Connection Timeout) 등이 있다. 이를 통해 커넥션을 효율적으로 관리하고 사용할 수 있다.

커넥션 풀 사용 이점

커넥션 풀(Connection Pool)은 애플리케이션과 데이터베이스 간의 데이터베이스 연결(Connection)을 미리 생성해두고, 이를 재사용하는 기법을 말한다. 데이터베이스에 접근할 때마다 새로운 연결을 생성하고 종료하는 대신, 미리 준비된 연결을 재사용함으로써 성능향상시키고 자원 사용최적화할 수 있다.

커넥션 풀 사이즈가 클 수록 좋은가?

커넥션을 사용하는 주체스레드(Thread) 이기 때문에, 커넥션과 스레드를 연결지어 생각해야 한다. 만약 커넥션 풀 사이즈가 > 스레드 풀 사이즈보다 크면, 스레드가 모두 사용하지 못해서 리소스가 낭비된다. 반대로 커넥션 풀 사이즈가 < 스레드 풀 사이즈보다 작으면, 스레드커넥션이 반환되기를 기다려야 하기 때문에 작업지연된다.

커넥션 풀 사이즈와 스레드 풀 사이즈의 균형이 맞더라도, 너무 큰 사이즈로 설정하면, 데이터베이스 서버, 애플리케이션 서버의 메모리와 CPU를 과도하게 사용하게 되므로 성능이 저하된다.

728x90
반응형

댓글