• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

커넥션 풀 설정 관련

23.10.18 16:57 작성 조회수 187

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
강의 잘 보고 있습니다

현업에서 보통 와스에서 커넥션 설정시

어떤 프로퍼티를 주로 설정하는지 알고 싶습니다.

그리고 maximumPoolSize = minimumIdle 같은값으로 명시적으로설정하나요??

minimumIdle 을 설정하지 않으면 default 가 maximumPoolSize 와 같으니 설정을 안하는게 맞는지요??

(제가 개발자가 아니라 테스트는 못해보고 문의드립니다 .)

답변 2

·

답변을 작성해보세요.

1

안녕하세요. 이은영님

다음과 같은 2가지 패턴으로 나눌 수 있는데요.

  1. minimumIdle와 maximumPoolSize가 동일할 때:

    • 장점:

      • 항상 동일한 수의 연결이 풀에 유지되므로, 예측 가능한 연결 사용 패턴에 적합합니다.

      • 피크 시간 중에도 연결을 새로 생성하거나 폐기하는 데 드는 오버헤드가 없습니다.

    • 단점:

      • 사용되지 않는 연결도 계속 유지됩니다. 따라서 시스템의 부하가 낮은 시간대에도 동일한 수의 연결이 유지되어 리소스가 낭비될 수 있습니다.

  2. minimumIdle가 maximumPoolSize보다 작을 때:

    • 장점:

      • 사용 패턴에 따라 연결 수가 동적으로 조절되므로, 부하가 낮은 시간대에는 리소스를 절약할 수 있습니다.

      • 풀의 크기가 동적으로 조절되므로, 다양한 연결 사용 패턴에 유연하게 대응할 수 있습니다.

    • 단점:

      • 부하가 급격히 증가할 경우, 새로운 연결을 생성하는 데 오버헤드가 발생할 수 있습니다.

minimumIdlemaximumPoolSize를 동일하게 설정할지 여부는 애플리케이션의 사용 패턴과 요구 사항에 따라 결정해야 합니다. 예를 들어, 연결 사용량이 일정하고 예측 가능하다면 두 값을 동일하게 설정하는 것이 유리할 수 있습니다. 반면, 연결 사용량이 동적이거나 부하가 일정하지 않은 경우, 두 값을 다르게 설정하여 풀의 크기를 동적으로 조절하는 것이 좋을 수 있습니다.

 

이 부분에 대한 정답은 없지만, 실무에서는 보통 데이터베이스의 리소스가 유동적이지 않고 한정되어 있고, 또 커넥션 풀의 경우 미리 확보해두는 것이 갑자기 큰 요청이 들어올 때 성능상 유리하게 때문에 max에 맞추어 커넥션을 미리 확보해 두는 것이 갑자기 증가하는 트래픽 대응에 유리합니다.

 

도움이 되셨길 바래요 :)

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.10.20

안녕하세요 이은영님, 인프런 AI 인턴이에요.

강의 내용과 관련된 질문을 주셔서 감사합니다.

현업에서 커넥션 설정 시 주로 설정하는 프로퍼티는 다양하게 있을 수 있습니다. 보통 사용하는 프로퍼티는 아래와 같습니다:
- driverClassName: 사용하는 데이터베이스의 JDBC 드라이버 클래스 이름
- url: 데이터베이스의 URL
- username: 데이터베이스 접속에 사용할 사용자명
- password: 데이터베이스 접속에 사용할 비밀번호
- maximumPoolSize: 커넥션 풀에 생성될 최대 커넥션 개수
- minimumIdle: 커넥션 풀이 유지할 최소한의 커넥션 개수
- connectionTimeout: 커넥션 요청 대기 시간
- idleTimeout: 커넥션이 유휴 상태로 유지될 수 있는 최대 시간
- validationTimeout: 커넥션이 유효한지 검사하는 타임아웃 시간
- connectionTestQuery: 커넥션 유효성을 검사하기 위해 실행하는 쿼리

그리고 _maximumPoolSize_와 minimumIdle 같은 값으로 명시적으로 설정하는 것은 일반적입니다. _minimumIdle_을 설정하지 않으면 기본값으로 _maximumPoolSize_와 같은 값이 사용됩니다. 따라서, 설정을 하지 않을 경우에는 _maximumPoolSize_와 같은 값으로 자동으로 설정되는 것이 맞습니다.

개발자가 아니시더라도 문의 주셨는데, 참고하시기 바랍니다. 추가적인 질문이 있으시면 언제든지 문의해주세요. 감사합니다.