문제 현상

DBeaver로 RDS 접속 시 아래와 같은 에러 메시지가 발생하며 SQL 쿼리 실행이 불가능한 상황이 발생했다. 

 Too many connections

 

분석

CPU 나 메모리 상으로는 큰 부하가 없는 상태이며 DB 연결은 45개에 근접한 상태이다. 

확인 결과 현재 사용중인 Amazon Aurora DB의 max connection 제한에 근접하여 발생한 문제였다. 
(db.t2.small 타입의 인스턴스 기준으로 최대 45개)

Instance Class

max_connections Default Value

db.t2.small

45

db.t2.medium

90

db.r3.large

1000

db.r3.xlarge

2000

db.r3.2xlarge

3000

db.r3.4xlarge

4000

db.r3.8xlarge

5000

RDS 설정 확인 시 max_connections 파라미터의 값은 아래와 같은 계산식을 통해 도출된다. 

GREATEST({log(DBInstanceClassMemory/805306368)*45},{log(DBInstanceClassMemory/8187281408)*1000})

해결방법

문제 해결을 위해 DB 클러스터 파라미터 그룹과 일반 파라미터 그룹의 max_connections의 값을 현재 값인 45에서 90으로 상향했다.

상향 후에는 connection 문제 없이 SQL 쿼리에 성공한다. 

 

AWS Console 상에서 수정한 max_connection 값은 아래 쿼리로 확인할 수 있다. 

show variables like 'max_connections'; 

관련 문서 : https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Performance.htm

'AWS' 카테고리의 다른 글

NestJS에서 AWS S3로 파일 업로드하기  (0) 2022.01.09
[AWS] RDS 데이터 백업 및 복구 방법  (0) 2020.03.03

다른 카테고리의 글 목록

AWS 카테고리의 포스트를 톺아봅니다