Amazon RDS for MySQL 인스턴스의 최대 연결을 늘리려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 8월 27일

Amazon Relational Database Service(Amazon RDS) for MySQL 인스턴스의 최대 연결을 늘리고 싶습니다. 어떻게 해야 합니까? 또, max_connections 파라미터 사용의 모범 사례는 무엇입니까?

해결 방법

Amazon RDS for MySQL에서 max_connections 지표는 설정된 최대 (허용) 동시 클라이언트 연결 수를 모니터링합니다.

기본적으로 max_connections 파라미터는 (DBInstanceClassMemory 값에서 계산된) Amazon RDS for MySQL의 다음 공식을 기반으로 합니다.

max_connections = DBInstanceClassMemory/12582880

기본 max_connections 값은 Amazon RDS 인스턴스가 사용하는 인스턴스 클래스에 따라 다릅니다. 사용 가능한 메모리가 더 많은 DB 인스턴스 클래스는 더 많은 수의 데이터베이스 연결도 지원합니다.

max_connections의 현재 값을 확인하려면 Amazon RDS for MySQL 인스턴스에 연결한 후 다음 명령을 실행합니다.

SHOW GLOBAL VARIABLES LIKE 'max_connections';

클라이언트 연결이 max_connections 값을 초과하면 “너무 많은 연결” 오류가 발생합니다.

다음 요인으로 인해 데이터베이스 연결이 max_connections 값을 초과할 수 있습니다.

  • 워크로드 또는 테이블/행 수준 잠금 증가로 인해 DB 인스턴스에 대한 클라이언트/애플리케이션 연결 수가 증가합니다.
  • 작업이 끝난 후 클라이언트/애플리케이션 연결을 부적절하게 종료합니다. 서버 연결이 제대로 종료되지 않았을 때 클라이언트 애플리케이션이 새 연결을 엽니다. 시간이 지남에 따라 이러한 새 서버 연결로 인해 인스턴스가 max_connections 값을 초과할 수 있습니다. MySQL DB 인스턴스의 모든 활성 연결을 나열하려면 SHOW FULL PROCESSLIST 명령을 사용합니다.
  • 휴면 연결(비활성 열린 연결이라고도 함)은 더 높은 연결 시간 초과 파라미터(예: wait_timeout 또는 interactive_timeout)로 인해 발생합니다. 연결 제한을 너무 높이 구성하면 연결이 사용되지 않더라도 메모리 사용량이 높아질 수 있습니다. 따라서 애플리케이션 서버가 데이터베이스에 대한 모든 클라이언트 연결을 열려고 하면 해당 연결이 거부될 수 있습니다. 휴면 연결을 종료하려면 mysql.rds_kill 작업을 사용합니다.
    팁: 애플리케이션 성능에 필요한 활성 연결만 구성하는 것이 좋습니다. 더 큰 Amazon RDS DB 인스턴스 클래스로 업그레이드하는 것도 고려해 볼 수 있습니다.

Amazon RDS for MySQL 인스턴스의 max_connections_parameter 증가

다음 방법을 사용하여 DB 인스턴스에 대한 최대 연결 수를 늘릴 수 있습니다.

  • DB 인스턴스를 더 많은 메모리가 있는 DB 인스턴스 클래스로 확장합니다.
    경고: Amazon RDS DB 인스턴스를 수정할 때 가동 중단이 발생합니다.
  • 사용자 정의 인스턴스 수준의 파라미터 그룹을 사용하여 max_connections 파라미터에 대해 더 큰 값을 설정합니다. max_connections 파라미터를 늘리면 중단이 발생하지 않습니다.
  • DB 인스턴스에서 기본 파라미터 그룹을 사용하는 경우 파라미터 그룹을 사용자 지정 파라미터 그룹으로 변경합니다. 사용자 지정 DB 파라미터 그룹을 Amazon RDS for MySQL 인스턴스와 연결하고 인스턴스를 재부팅해야 합니다. 새 사용자 지정 파라미터 그룹이 DB 인스턴스와 연결되면 max_connections 파라미터 값을 수정할 수 있습니다.
    참고: 파라미터 그룹을 변경하면 중단이 발생할 수 있습니다. 자세한 내용은 DB 파라미터 그룹 작업을 참조하세요.

사용자 지정 파라미터 그룹을 생성하고 max_connections 파라미터를 수정하려면 Amazon RDS DB 파라미터 그룹의 값을 수정하려면 어떻게 해야 합니까?를 참조하세요.

max_connections 파라미터 구성에 대한 모범 사례

DB 인스턴스의 max_connections 파라미터로 작업할 때 다음 모범 사례를 고려해야 합니다.

  • 기본 연결 제한은 버퍼 풀 등의 다른 주요 메모리 소비자의 기본값을 사용하는 시스템에 맞춰 튜닝됩니다. 인스턴스 클래스 값을 변경하는 대신 인스턴스 클래스를 확장하는 것이 가장 좋습니다. 그러나 인스턴스에 사용 가능한 메모리가 많은 경우 이 파라미터를 수동으로 변경할 수 있습니다. DB 인스턴스에 대해 이러한 설정을 변경하는 경우 DB 인스턴스에서 사용 가능한 메모리의 증가 또는 감소를 고려하여 연결 제한을 조정하는 것이 좋습니다.
  • max_connections 값을 각 DB 인스턴스에서 열 것으로 예상되는 최대 연결 수보다 약간 더 높이 설정합니다.
  • 성능 스키마도 활성화한 경우 max_connections 파라미터 설정에 주의해야 합니다. 성능 스키마 메모리 구조는 서버 구성 변수에 따라 자동으로 크기가 조정됩니다. 변수를 높게 설정할수록 성능 스키마가 더 많은 메모리를 사용합니다. 극단적인 경우 이로 인해 T2와 T3 등의 더 작은 인스턴스 유형에서 메모리 부족 문제가 발생할 수 있습니다. 성능 스키마를 사용하는 경우 max_connections 설정을 기본값으로 두는 것이 좋습니다. max_connections를 기본값보다 훨씬 높은 값으로 늘리려면 성능 스키마를 비활성화하는 것이 좋습니다.
    참고: Amazon RDS for MySQL DB 인스턴스에 대해 성능 개선 도우미를 활성화하면 성능 스키마도 자동으로 활성화됩니다.
  • max_connections 파라미터를 튜닝할 때 다음 MySQL 연결 관련 파라미터도 검토해야 합니다.
    wait_timeout: 서버가 비대화형 TCP/IP 또는 UNIX 파일 연결을 종료하기 전에 해당 연결에 대한 활동을 기다리는 시간(초)입니다.
    interactive_timeout: 서버가 대화형 연결을 종료하기 전에 해당 연결에 대한 활동을 기다리는 시간(초)입니다.
    net_read_timeout: 읽기를 삭제하기 전에 TCP/IP 연결에서 추가 데이터를 기다리는 시간(초)입니다.
    net_write_timeout: 쓰기를 삭제하기 전에 블록이 쓰여질 때까지 TCP/IP 연결을 기다리는 시간(초)입니다.
    max_execution_time: SELECT 문에 대한 실행 제한 시간(밀리초)입니다.
    max_connect_errors: 중단된 연결 수가 이보다 많으면 호스트가 추가 연결에서 차단됩니다.
    max_user_connections: 지정한 MySQL 계정에 허용되는 최대 동시 연결 수입니다.

참고: 이 문서에는 이러한 파라미터에 대한 권장 값이 포함되어 있지 않습니다. 이러한 값은 본인의 사용 사례에 따라 달라지기 때문입니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?