반응형
MariaDB Connector/J 및 AWS RDS Aurora에서 이상한 간헐적 문제 발생
설정은 다음과 같습니다.
- AWS RDS Aurora 클러스터, 단일 지역, 단일 마스터, 2개의 읽기 복제본
- 동일한 VPC 내에서 실행되는 Java 노드
- MariaDB Connector/J(Aurora 페일오버 모드 포함)
- 접속 풀로서의 HikariCP
- HikariCP에는 디폴트가 있습니다.
maxLifetime
30분의 - Aurora는 디폴트입니다.
wait_timeout
8시간의
MariaDB Connector/J에게 Aurora 읽기 복제와 마스터에 대해 지정된 쿼리를 실행하도록 지시하기 위해 전화합니다.Connection.setReadOnly(true)
그것을 얻은 후에HikariDataSource
.
모든 것이 잘 작동하지만...평균적으로 일주일에 두 번 정도 Java 노드 플릿의 2%가 읽기 복제본을 쿼리할 때 예외에 도달합니다.예외는 동일한 복제본에 대해 1, 2초 이내에 서로 다른 노드에서 발생합니다.
기본 예외 스택은 다음과 같습니다.
Caused by: java.sql.SQLInvalidAuthorizationSpecException: (conn=2445137) Communications link failure with secondary host xxx.xxx.us-east-1.rds.amazonaws.com:3306. (conn=1644010) Connection is closed
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:66)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:153)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:273)
at org.mariadb.jdbc.ClientSidePreparedStatement.executeInternal(ClientSidePreparedStatement.java:229)
at org.mariadb.jdbc.ClientSidePreparedStatement.execute(ClientSidePreparedStatement.java:149)
at org.mariadb.jdbc.ClientSidePreparedStatement.executeQuery(ClientSidePreparedStatement.java:163)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
at com.querydsl.sql.AbstractSQLQuery.iterateSingle(AbstractSQLQuery.java:370)
... 21 more
Caused by: java.sql.SQLException: Communications link failure with secondary host xxx.xxx.us-east-1.rds.amazonaws.com:3306. (conn=1644010) Connection is closed
on HostAddress{host='xxx.xxx.us-east-1.rds.amazonaws.com', port=3306},master=false. Driver has reconnect connection
at org.mariadb.jdbc.internal.failover.AbstractMastersListener.throwFailoverMessage(AbstractMastersListener.java:563)
at org.mariadb.jdbc.internal.failover.FailoverProxy.handleFailOver(FailoverProxy.java:391)
at org.mariadb.jdbc.internal.failover.FailoverProxy.executeInvocation(FailoverProxy.java:324)
at org.mariadb.jdbc.internal.failover.FailoverProxy.invoke(FailoverProxy.java:294)
at com.sun.proxy.$Proxy27.executeQuery(Unknown Source)
at org.mariadb.jdbc.ClientSidePreparedStatement.executeInternal(ClientSidePreparedStatement.java:220)
... 26 more
다음으로 해당 Aurora 인스턴스의 MySQL 오류 로그를 확인하면 Java 노드에서 예외가 발생한 후 몇 초 또는 몇 분 후에 연결 중단이 보고됩니다.
1644010 [Note] Aborted connection 1644010 to db: 'xxx' user: 'xxx' host: 'xxx' (Got an error reading communication packets)
비슷한 걸 마주친 사람이 있나요?원인이 무엇인지 짐작이 가는 것이 있습니까?
언급URL : https://stackoverflow.com/questions/67198865/strange-intermittent-issue-with-mariadb-connector-j-and-aws-rds-aurora
반응형
'programing' 카테고리의 다른 글
mariaDb, mySQL을 사용하여 반경 내의 모든 공간 유형 지점(km)을 가져옵니다. (0) | 2022.09.05 |
---|---|
함수 표현식 앞에 JavaScript 플러스 기호 (0) | 2022.09.05 |
MySQL DATE_FORMAT 또는 DateTime.strftime을 통한 DateTime 문자열 (0) | 2022.09.05 |
Python: 원트라이 멀티 예외 (0) | 2022.09.05 |
POST 데이터를 사용한 PHP 리다이렉트 (0) | 2022.09.05 |