aws rds를 사용하면서 프로젝트를 하는 도중, too many connections라는 에러를 발견하게 되었다.
전체적인 에러는 아래와 같다.
java.sql.SQLNonTransientConnectionException: Too many connections
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:234) ~[mariadb-java-client-2.3.0.jar:na]
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:165) ~[mariadb-java-client-2.3.0.jar:na]
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1199) ~[mariadb-java-client-2.3.0.jar:na]
에러 내용대로 RDS 크기에 비해 너무 많은 connection이 맺어져있어서 문제가 발생한 것이다.
이럴 때 connection을 할 수 있는 수를 늘리는 것보다 connection timeout을 하는 시간을 줄이는 게 합리적이다.
1. RDS에 접속한다.
2. 사용하는 데이터베이스를 클릭하여 구성 탭을 확인한다.
3. 구성 탭에 인스턴스 정보가 나와있는 것을 볼 수 있는데 해당 부분에서 파라미터 그룹을 수정해줄 것이다.
* 파라미터 그룹이 커넥션 수, 타임아웃 시간 등의 기본 정보들을 다룰 수 있는 그룹이다.
만약에, 해당 파라미터 그룹을 눌러서 이미 연결되어있는 다른 데이터베이스가 있다면 새로운 파라미터 그룹으로 연결한 다음에 새로운 파라미터 그룹으로 연결하는 것이 좋다.
왜냐하면 파라미터 그룹을 수정하는 순간, 그 파라미터 그룹에 연관된 모든 데이터베이스의 정보가 반영되어 수정되기 때문이다.
4. timeout이라고 검색한다.
5. wait_timeout을 수정해주면 된다.
28800이 기본 값이고, 8시간을 의미한다.
180으로 줄이고, 작은 프로젝트라면 최소 10까지 줄여도 무관하다.
6. 해결 끝!
SMALL
'aws' 카테고리의 다른 글
AWS S3 이미지 깨지는 현상 (0) | 2023.08.11 |
---|