일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- RedirectService
- Ingress Controller Fake
- jar 배포
- 오블완
- formik
- 애자일 싫타
- Loki 로그
- nGinder
- OIDC
- 플루터
- LPOS
- fake jwt
- pinpoint
- 핀포인트
- ㅉ때
- R2DBC Paging
- reids
- 노드간 통신
- UnsupportedOperationException
- 논블록킹 성능
- 티스토리챌린지
- intellij
- hbase 저장공간 설정
- 월급루팡 일지
- pinpoint 2.5.3
- Armeria
- 7879
- jsonMarshaller
- 개발 어렵당.ㅠ
- save/update
- Today
- Total
대머리개발자
R2DBC ...불행의 시작...(2) 본문
우리내 인생사는 시작과 끝이 중요하다.
해서 결론부터 이야기 하자면
일단 R2DBC lib 문제는 아니였다.
또한 로컬에서는 해당 문제가 재현되지 않았다.
결국s DB 서버 설정 문제....
이미 해당증상을 경험했고 해결을 했다고 생각했는데... 또 다시 발생하니.. 이런 코로나 같은 다시 한번 곱 씹어 보자!!!
재현 증상은
서버를 기동 후 바로 테스트 진행 -> 정상 OK
3분정도 지나면 모든 커넥션 소멸 (Connection has been closed by peer )
다시 테스트 진행 -> MySqlConnectionClosedException
다시 한번 R2DBC를 변경해서 테스트 시도!!
dev.miku.r2dbc.mysql.client.MySqlConnectionClosedException:
Cannot exchange messages because the connection is closed
io.asyncer.r2dbc.mysql.client.MySqlConnectionClosedException:
Cannot exchangs because the connection is closed
로컬에서는 해당 문제가 재현되지 않는다.
"3분" 지나면 커넥션 소멸되는 로그가 발생한다.
두 가지 현상을 가지고 해결의 실마리로.......렛츠고!
나의 설정(maxLifeTime, maxIdleTime)에도 영향도 가 없고 그냥 커넥션이 죽네? 왜? 왜? 왜!? 안 먹히는거지!! 혹은 그 보다 빠른 커넥션 Close 명령이 어디선가 실행 되나.? 해서 DB 자체적으로 커넥션 Close 옵션이 있나 해서 찾아봤더니
근데 생각해보면 풀장에 커넥션 친구가 없으면 새롭게 뽑아서 일을 시키면 되는데.... 왜 오류 뿜고 지롤..s?
설정 wait_timeout 보다 2~3초 짧게 잡아서 해결을 봤다.
.option(Option.valueOf("maxIdleTime"), Duration.ofSeconds(157))
.option(Option.valueOf("maxLifeTime"), Duration.ofSeconds(157))
DB 쪽에서 먼저 close를 하게 되면 우리쪽의 "풀장" 관리가 잘 안되나보다.. 외부요인에 의해서 칼질 당하는 거니..
내부에서 "먼저" 처리 할 수 있도록 변경했더니 잘 핸드쉐이크를 했다. 오류 뿜고 지롤s 하지 않는다...고맙다.! 워워!
우리 이제 헤어지지 말자.!!! 젭압
R2DBC의 설정은 1.POJO 방식과 2.프러퍼티 설정을 통해서 진행 할 수 있다.
R2DBC 풀장 관련 : https://github.com/r2dbc/r2dbc-pool
GitHub - r2dbc/r2dbc-pool: Connection Pooling for Reactive Relational Database Connectivity
Connection Pooling for Reactive Relational Database Connectivity - GitHub - r2dbc/r2dbc-pool: Connection Pooling for Reactive Relational Database Connectivity
github.com
R2DBC : https://github.com/asyncer-io/r2dbc-mysql
GitHub - asyncer-io/r2dbc-mysql: Reactive Relational Database Connectivity for MySQL. The official successor to mirromutth/r2dbc
Reactive Relational Database Connectivity for MySQL. The official successor to mirromutth/r2dbc-mysql(dev.miku:r2dbc-mysql). - GitHub - asyncer-io/r2dbc-mysql: Reactive Relational Database Connecti...
github.com
그리고 최근까지 업데이트가 진행되는 "io.asyncer:r2dbc-mysql:0.9.3" 이 친구로 다시 장착했다.
몇 개 안되는 기능 전수 테스트 고고 ㅠㅠ
'개발이야기 > DataBase' 카테고리의 다른 글
게시판 코드에서...고민s (0) | 2023.10.24 |
---|---|
[R2DBC] 바인딩 (0) | 2023.09.13 |
R2DBC ...불행의 시작... (1) | 2023.04.12 |
R2DBC 동적 쿼리는...쥐쥐s (0) | 2023.04.05 |
[우분투] 마리아DB 대/소문자 설정 (0) | 2023.03.07 |