문제 현상
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 |