Amazon RDS for MySQL 또는 Amazon RDS for PostgreSQL 인스턴스의 최대 연결을 늘리려면 어떻게 해야 합니까?
MySQL용 Amazon Relational Database Service(Amazon RDS) 또는 DB 인스턴스용 Amazon RDS for PostgreSQL의 최대 연결을 늘리고 싶습니다.
해결 방법
참고: 최대 연결 수를 늘리기 전에 기존 구성을 최적화하는 것이 모범 사례입니다.
현재 max_connections 값 확인
max_connections 지표는 RDS for MySQL와 RDS for PostgreSQL 모두에 대한 최대 데이터베이스 연결 수를 설정합니다. max_connections의 기본값은 Amazon RDS 인스턴스가 사용하는 인스턴스 클래스에 따라 달라집니다. 사용 가능한 메모리가 더 많은 DB 인스턴스 클래스는 데이터베이스 연결 수가 더 많을 수 있습니다.
max_connections 값을 확인하려면 DB 엔진의 Amazon RDS DB 인스턴스에 연결하고 다음 명령을 실행합니다.
-
RDS for MySQL:
SHOW GLOBAL VARIABLES LIKE 'max_connections';
-
RDS for PostgreSQL:
postgres=> show max_connections;
참고: 수식을 사용하여 계산한 기본 max_connections 수는 위 명령의 출력과 약간 다를 수 있습니다. 이러한 차이는 Amazon RDS가 전체 DBInstanceClassMemory에서 기본 OS 작업을 위해 일부 메모리를 예약하기 때문입니다. 위 명령은 PostgreSQL 엔진용으로 예약된 메모리만 사용하고 기본 호스트 OS용 메모리는 사용하지 않습니다.
기존 연결 최적화
max_connections 값을 늘리기 전에 기존 연결 수를 줄일 수 있는지 확인하십시오. 클라이언트 연결 수가 max_connections 값을 초과하면 다음 오류 중 하나가 발생합니다.
- MySQL: "Too many connections" 오류
- PostgreSQL: "FATAL: remaining connection slots are reserved for non replicate superuser connections"
Amazon RDS의 워크로드가 증가하거나 테이블 또는 행 수준의 잠금이 있는 경우 이러한 오류가 발생할 수 있습니다. 인스턴스의 워크로드가 예상대로 작동하는 경우 max_connections 파라미터를 늘려야 합니다.
작업 종료 후 모든 클라이언트 및 애플리케이션 연결을 닫았는지 확인합니다.
서버 연결이 종료되지 않은 경우 클라이언트 애플리케이션은 새 연결을 엽니다. 시간이 지남에 따라 이러한 새 서버 연결로 인해 인스턴스가 max_connections 값을 초과할 수 있습니다.
RDS for MySQL DB 인스턴스의 모든 연결을 나열하려면 다음 명령을 실행합니다.
SHOW FULL PROCESSLIST;
RDS for PostgreSQL 인스턴스의 각 데이터베이스 연결을 보려면 다음 명령을 실행합니다.
SELECT datname, numbackends FROM pg_stat_database;
(MySQL만 해당) 휴면 연결 확인
wait_timeout 또는 interactive_timeout과 같은 연결 제한 시간 파라미터에 더 높은 값을 설정하면 휴면 또는 비활성 상태의 열린 연결이 발생합니다. 연결 할당량을 높게 구성하면 연결을 사용하지 않더라도 메모리 사용량이 많아질 수 있습니다.
RDS for MySQL 인스턴스의 유휴 연결을 보려면 다음 쿼리를 실행합니다.
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Sleep';
RDS for MySQL DB 인스턴스에서 휴면 연결을 종료하려면 다음 명령을 실행합니다.
CALL mysql.rds_kill(example-pid);
(PostgreSQL만 해당) 유휴 연결 확인
RDS for PostgreSQL 인스턴스의 유휴 연결을 보려면 다음 쿼리를 실행합니다.
SELECT * FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND state in ('idle', 'idle in transaction', 'idle in transaction (aborted)', 'disabled') AND state_change < current_timestamp - INTERVAL '15' MINUTE;
쿼리의 출력에는 유후, 트랜잭션 유휴, 트랜잭션 유휴(중단됨) 또는 15분 이상 유휴로 비활성화됨 상태에 있는 백엔드 프로세스가 표시됩니다.
RDS for PostgreSQL 인스턴스에서 유휴 연결을 종료하려면 다음 명령을 실행합니다.
SELECT pg_terminate_backend(example-pid);
참고: 애플리케이션 성능에 필요한 활성 연결만 구성하는 것이 모범 사례입니다. 애플리케이션 구조에 유휴 연결이 필요한 경우 Amazon RDS 프록시를 사용하는 것이 모범 사례입니다.
최대 연결 수 늘리기
참고: 인스턴스를 스케일 업하면 가동 중지 시간이 발생하고 청구되는 방식이 변경됩니다.
최대 연결 수를 늘리려면 DB 인스턴스를 메모리가 더 많은 DB 인스턴스 클래스로 스케일 업하는 것이 모범 사례입니다. max_connections 파라미터를 기본값 이상으로 높이는 것은 모범 사례가 아닙니다. 더 많은 연결에 더 많은 메모리 사용량이 필요한 경우 인스턴스에 문제가 발생할 수 있습니다. 메모리가 부족한 인스턴스는 충돌이 발생할 수 있습니다. max_connections 값을 높이는 경우 FreeableMemory Amazon CloudWatch 지표를 사용하여 리소스 사용량을 모니터링하십시오.
하지만 인스턴스에 사용 가능한 메모리가 많으면 max_connections 파라미터를 수동으로 변경하십시오. max_connections를 조정하기 전에 DB 인스턴스의 사용 가능한 메모리 변화를 고려하여 파라미터 그룹의 연결 제한을 조정하십시오.
DB 인스턴스가 기본 파라미터 그룹을 사용하는 경우 사용자 지정 파라미터 그룹을 생성하고 사용하여 max_connections를 수정해야 합니다. 사용자 지정 DB 파라미터 그룹을 Amazon RDS 인스턴스와 연결한 다음 인스턴스를 재부팅합니다. 새 사용자 지정 파라미터 그룹을 DB 인스턴스에 연결한 후 max_connections 파라미터 값을 수정할 수 있습니다. 자세한 내용은 Amazon RDS DB 파라미터 그룹의 값을 수정하려면 어떻게 해야 합니까?를 참조하십시오. max_connections 값을 각 DB 인스턴스에서 열 것으로 예상되는 최대 연결 수보다 약간 높게 설정하십시오.
참고: 재부팅하는 동안 잠시 중단이 발생합니다.
max_connections를 늘리기 위한 RDS for MySQL 모범 사례
성능 스키마를 활성화한 경우 기본 max_connections 설정을 사용하는 것이 모범 사례입니다. 성능 스키마 메모리 구조는 서버 구성 변수에 따라 자동으로 크기가 조정됩니다.
참고: Amazon RDS for MySQL DB 인스턴스에 대한 성능 인사이트를 활성화하면 성능 스키마가 자동으로 활성화됩니다.
사용 사례에 따라 다음과 같은 MySQL 연결 관련 파라미터의 제한 시간 설정을 최적화하십시오.
- wait_timeout
- interactive_timeout
- net_read_timeout
- net_write_timeout
- max_execution_time
- max_connect_errors
- max_user_connections
이러한 파라미터에 대한 자세한 내용은 MySQL 웹 사이트의 7.1.8 서버 시스템 변수를 참조하십시오.
max_connections를 늘리기 위한 RDS for PostgreSQL 모범 사례
사용 사례에 따라 다음과 같은 PostgreSQL 연결 관련 파라미터의 제한 시간 설정을 최적화하십시오.
- idle_in_transaction_session_timeout
- tcp_keepalives_idle
- tcp_keepalives_interval
- tcp_keepalives_count
이러한 파라미터에 대한 자세한 내용은 PostgreSQL 웹 사이트의 idle_in_transaction_session_timeout(정수) 및 19.3.2 TCP 설정을 참조하십시오.

관련 콘텐츠
- 질문됨 3달 전lg...
- 질문됨 2년 전lg...
- 질문됨 일 년 전lg...
- 질문됨 일 년 전lg...
- 질문됨 일 년 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 4년 전