본문 바로가기
CS/DataBase

[MySQL] AWS RDS MySQL Too many connections 에러

by BK0625 2023. 10. 5.
반응형

프로젝트를 하던 중에 갑자기

 

 

위 에러가 떴다. 즉 모든 연결 가능한 커넥션들이 다른 clients 들에 의해 쓰이고 있다는 것이고 max_connect_errors 동안 커넥션에 실패하면 이후의 모든 커넥션이 블로킹이 되버린다.

 

일단 왜 커넥션을 확인해보니

 

현재 59개가 연결되어 있고 show variables like '%max_connections%'; 명령어를 통해 max_connections를 보니 60이였다. 참고로 이 RDS는 db.t3.micro이고 기본 max_connections는 66이라고 한다.

 

 

왜 커넥션 수가 증가 했는지도 파악하긴 해야겠지만 일단 당장 에러가 났으니 커넥션 수를 늘리려고 시도했다.

 

방법은 두가지인데 RDS 인스턴스 스펙을 db.t3.small로 올리던가(이러면 150개 연결 가능) max_connections를 늘려주어야 한다.

 

스펙을 바꾸는건 해당 RDS 인스턴스 수정에 들어가서 바꿔주면 된다.

 

 

단 이러면 요금이 비싸지기 때문에 요금의 압박이 있는 나는 max_connections을 늘려주기로 했다.

(일반적인 서비스 상황에서는 max_connections를 늘려주는 것보다 RDS 인스턴스 스펙을 올려주는 방법이 좋다고 한다. 이는 성능 이상의 요청이 발생하면 DB 자체의 문제가 생길 수 있기 때문이다. 따라서 인스턴스 스펙을 조정하고 기본 값으로 사용하는 것이 일반적이라고 한다. )

 

먼저 max_connections 값을 변경하기 위해서 DB 인스턴스에 연결된 파라미터 그룹을 수정해야 한다.

 

해당 인스턴스에 연결된 파라미터 그룹

 

저기서 편집을 누른 뒤에

 

 

 

max_connections를 보면 {DBInstanceClassMemory/12582880}라고 기본 값으로 설정되어 있는 것을 볼 수 있다. 참고로 기본 파라미터 그룹은 수정할 수 없고 사용자 지정 파라미터 그룹을 생성하고 파라미터를 변경한 다음 새 파라미터 그룹을 사용하도록 인스턴스를 수정해야 한다.

 

 

 

max_connections 수를 80으로 늘렸다. 전에는 파라미터를 수정한 뒤 즉시 적용하고 DB 인스턴스를 재시작해야 변경된 파라미터가 적용됐다고 하는데 해보니 그냥 바로 수정이 되었다.

 

공간에 여유가 생겼다.

반응형