[AWS][RDS] DB max_connection 관련 문의
[AWS][RDS] DB max_connection 관련 문의
문의 사항

DATABASE 에서 Current activity connection 이 갑작스럽게 110 이 넘어가면서 시스템 장애가 생깁니다.
물론 아직 사용자수가 많지 않아서 스펙을 작은 것을 사용하고 있는데, 데이터를 입력하고 몇번 쿼리를 하면 그렇게 되네요.
하지만 쿼리를 직접 날렸을때는 속도가 그다지 큰 것은 아닙니다.
저희는 Lambda 를 사용하고 있는데 혹시 이것과 관련이 있을지요?
아니면 wait_timeout 을 줄이거나 max_connection 을 늘리면 괜찮을지 문의드립니다.
늘린다면 얼마까지 늘려도 문제가 없을까요?
현재 사용하는 것은 mysql 8.0 을 사용하고 있는데 추후에 mysql 에서 aurora 로 변경하면 이런 이슈가 괜찮아 질까요?
확인 부탁드립니다.
답변
안녕하세요.
현재 사용 중이신 db.t4g.small 인스턴스의 경우 RDS 에서 자동으로 셋팅되는 Max_connection 값은 100 입니다.

파라미터에 보이시는 계산식 기준으로 2GiB/12582880 = 170 정도의 수치가 나오나 잠재적인 메모리 부족 문제를 방지하기 위해 더 낮은 수치로 적용이 됩니다.
max_connection 값은 수동으로 값을 지정 할 순 있으나, 성능 이상의 요청이 발생하면 DB 자체의 문제가 생길 우려가 있으므로 기본값을 사용 하시고 여유있게 설정하는 것을 권장드리며
즉, 수치를 직접 조정하시기 보다는 인스턴스 클래스 변경을 권장 드립니다.
문의 사항[2]
안녕하세요.
답변 잘 들었습니다.
인스턴스를 늘리면 가장 좋겠지만, 스타트업의 입장에서 어느정도 실거래 트래픽이 나올때 올리고자 하는 이슈가 있어서 그렇습니다.
현재 스펙의 RDS 와 한단계나 두단계를 올렸을때의 스펙으로 변경했을경우 월비용이 얼마나 차이가 나는지 알 수 있을까요?
그리고 max_conncection 을 group을 통해서 변경하였을경우 RDS 접속툴을 이용해서 (DB 접속툴) 콘솔 창에서도 확인하면 그 내용을 확인할 수 있는게 맞는지요?
Dev RDS 의 경우 modify 에서 세팅값을 batongapp 으로 변경하고 적용을 하였는데요.
다음과 같은 명령으로 확인해 보면 여전히 기존의 세팅값이 나타나고 있습니다. (현재는 batongapp 세팅에서는 100 으로 바꾼 상태입니다. Dev 는 micro 이기에 default 가 60 입니다.)
이유를 알 수 있을런지요?
감사합니다.
답변[2]
안녕하세요.
현재 스펙의 RDS 와 한단계나 두단계를 올렸을때의 스펙으로 변경했을경우 월비용이 얼마나 차이가 나는지 알 수 있을까요?
-> https://calculator.aws/#/createCalculator/RDSMySQL 페이지를 통해 대략적인 비용 계산이 가능합니다.
현재 구성과 최대한 유사하게 설정 시 아래와 같은 금액이 나오며
서울리전
db.t4g.small
24시간 운용
Multi-AZ
OnDemand
proxy 미사용
gp2 스토리지 20GB
스토리지 요금 (Monthly): 5.52
RDS MySQL 비용 (Monthly): 74.46
Total Monthly cost: 79.98 USD
동일 셋팅에 인스턴스클래스만 db.t4g.medium 으로 변경시
스토리지 요금 (Monthly): 5.52 USD
RDS MySQL 비용 (Monthly): 148.19 USD
Total Monthly cost: 153.71 USD
그리고 max_conncection 을 group을 통해서 변경하였을경우 RDS 접속툴을 이용해서 (DB 접속툴) 콘솔 창에서도 확인하면 그 내용을 확인할 수 있는게 맞는지요?
->
변경 후 확인 가능합니다.
아래는 제가 동일한 셋팅으로 RDS 를 생성 후 테스트한 내용입니다.
파라미터 그룹 변경 적용 이후 재부팅 1회 진행, 이후 max_connections 값 변경 후 재부팅 1회 진행 이후 온라인에서도 정상적으로 파라미터 값 변경 적용 확인하였습니다.
다만 변경 후 RDS 에 적용까지 약간의 딜레이가 있습니다(약 30초 정도).
만약 적용이 안되는 상황이시라면 RDS 재부팅을 한 번 해보시는 것을 권장 드립니다.

mysql> show variables like '%max_connect%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| max_connect_errors | 100 |
| max_connections | 60 |
+--------------------+-------+
2 rows in set (0.01 sec)

mysql> show variables like '%max_connect%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| max_connect_errors | 100 |
| max_connections | 100 |
+--------------------+-------+
2 rows in set (0.00 sec)

mysql> show variables like '%max_connect%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| max_connect_errors | 100 |
| max_connections | 120 |
+--------------------+-------+
2 rows in set (0.00 sec)
감사합니다.