일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- TestCase
- 유방암보호자일기
- R2DBC
- $partitions
- spybean
- 유방암일기
- 좋은개발
- 유방암
- java
- r2dbc pool
- Public Key Retrieval is not allowed
- MultiModule
- Infrastructure as Code
- show partition
- mockbean
- useSSL
- 유방암보호자
- OncePerRequestFilter
- Trino
- jdbc 연동오류
- retrieval
- 현대자동차코테후기
- log4j version up
- 현대자동차코테
- Microservice
- allowPublicKeyRetrieval
- ecs layout
- trino jdbc
- 멀티모듈
- 내가보려고한
- Today
- Total
우당탕 개발일지
Failed to obtain R2DBC Connection 해결 본문
사실 db pool 이슈는 여러가지 설정으로 인한 connection fail 문제가 발생하기 때문에 검색에 충분한 답변이 아닐 수 있습니다.
저의 경우에는 connection 설정 중 connection 을 얻는 maxAcquireTime 이 3초보다 더 걸려서 timeout 을 발생하여 오류가 났었습니다.

제가 맡은 서비스는 데이터 수집 처리를 하기 때문에 짧은 시간 주기에 처리해야되서 pool 내의 connection 이 모두 연결하게 되어 새로운 요청이 들어왔을 시 연결을 얻는데 시간이 소요됨으로 timeout 이 발생한 것입니다.
개발하는 것만큼 어려운 것이 이런 pool 설정을 조정하는 것이라고 생각합니다.
너무 풀을 크게 만들게 되면 놀게되는 connection 들이 많아져 메모리 낭비가 많아지기 때문에 정답이 아니며,
너무 작게 만들면 connection 을 얻기 위한 대기 시작이 길어지기 때문에 성능 저하가 발생합니다.
어차피 connection pool 을 늘리더라도 스레드의 문맥교환에는 성능적 한계가 발생합니다.
여러가지 방법이 존재합니다.
내가 운영하는 서비스의 cpu 갯수, 사용자의 인입 등 다양하게 분석할 수 있겠지만 저는 이런 문제들을 경험하면서 조금씩 설정을 바꿔서 최적의 설정을 찾아가는 방법이 가장 좋다고 생각합니다.
저는 이 이슈가 발생했을 때 maxAcquireTime 을 3000ms 로 설정해두어서 이를 조금 늘려서 처리했더니 오류가 더 이상 발생하지 않았습니다.
참고 url : https://github.com/r2dbc/r2dbc-pool/blob/main/README.md