내용으로 건너뛰기

Amazon Aurora MySQL 인스턴스에 연결할 때 ‘Too many connections 오류’가 발생하는 이유는 무엇입니까?

4분 분량
0

Amazon Aurora MySQL 호환 버전 DB 인스턴스에 연결하려고 하는데 ‘Too many connections’ 오류가 발생합니다. DB 인스턴스의 최대 연결 값과 이를 변경하는 방법을 알고 싶습니다.

간략한 설명

클라이언트 연결 수가 DB 인스턴스의 max_connections 파라미터 값을 초과하면 ‘Too many connections’ 오류 메시지가 표시됩니다.

이 문제를 해결하려면 먼저 DB 인스턴스에서 실행 중인 모든 쿼리 및 스레드를 확인합니다. 그런 다음, DB 인스턴스에서 로깅을 활성화합니다. 기존 연결을 검토하고 불필요한 연결을 종료하여 연결 압력을 줄입니다. 또한 MySQL 연결 파라미터를 조정하십시오. 그래도 문제가 발생하면 DB 인스턴스에 대한 최대 연결 수를 늘리십시오.

해결 방법

DB 인스턴스에서 실행 중인 모든 쿼리 및 스레드 보기

DB 인스턴스에서 실행 중인 모든 쿼리를 봅니다. 그런 다음, Threads_Connected 값을 확인하여 열려 있는 연결 수를 확인합니다. 자세한 내용은 MySQL 웹 사이트의 Threads_connected를 참조하십시오.

MySQL 5.7의 경우 다음 명령을 실행합니다.

mysql> SELECT variable_value AS Threads_Connected FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE variable_name='threads_connected';

MySQL 8.0의 경우 다음 명령을 실행합니다.

mysql> SELECT variable_value AS Threads_Connected from performance_schema.global_status where VARIABLE_NAME = 'threads_connected';

참고: Aurora는 rdsadmin 관리 사용자를 통해 데이터베이스에 연결할 수 있으므로 threads_connected의 값은 max\ _connections보다 클 수 있습니다.

DatabaseConnections 대신 threads_connected 또는 information_schema.processlist를 사용하는 것이 모범 사례입니다. threads_connectedinformation_schema.processlist 파라미터는 사용 가능한 MySQL 연결 중 다른 클라이언트가 사용 중인 연결을 보여줍니다.

DatabaseConnections는 휴면 연결이나 데이터베이스 엔진이 자체 목적으로 만드는 세션을 제외한 전체 원격 TCP 연결을 표시합니다. 따라서 DatabaseConnections 값이 MySQL 스레드가 수행하는 작업 수보다 작을 수 있습니다.

DB 인스턴스에서 로깅 활성화

연결 수 증가 문제의 근본 원인을 파악하려면 Aurora MySQL 호환 DB 인스턴스에서 로깅을 활성화합니다. general_log, slow_query_log 또는 고급 감사 로그 파리미터를 활성화할 수 있습니다.

DB 인스턴스의 불필요한 연결 종료

rds_kill 및 rds_kill_query 명령을 사용하여 DB 인스턴스에서 실행 중인 불필요한 사용자 세션과 쿼리를 종료합니다.

MySQL 연결 파라미터 조정

원하는 값을 기반으로 DB 인스턴스의 다음 MySQL 연결 파라미터를 조정합니다.

  • wait_timeout
  • interactive_timeout
  • net_read_timeout
  • net_write_timeout
  • max_execution_time
  • max_connect_errors
  • max_user_connections

위의 각 파라미터에 대한 자세한 내용은 MySQL 웹 사이트의 서버 시스템 변수를 참조하십시오.

DB 인스턴스에 대한 최대 연결 수 늘리기

연결 파라미터를 조정한 후에도 문제가 발생하면 DB 인스턴스에 대한 최대 연결 수를 늘리십시오. DB 인스턴스의 현재 max_connections 값을 확인하려면 DB 인스턴스에 연결된 파라미터 그룹을 확인하십시오. 또는 다음 쿼리를 실행하십시오.

select @@max_connections;

Aurora MySQL 호환 및 Amazon Relational Database Service(Amazon RDS) for MySQL DB 인스턴스의 메모리 오버헤드는 서로 다릅니다. 동일한 인스턴스 클래스를 사용하는 Aurora MySQL 호환 및 Amazon RDS for MySQL DB 인스턴스의 max_connections 값은 다를 수 있습니다.

인스턴스 클래스의 최대 연결 수를 확인하려면 다음 공식을 사용하십시오.

max_connections = GREATEST({log(17179869184/805306368)*45},{log(17179869184/8187281408)*1000})

참고: 위의 예는 16GiB 메모리가 있는 Aurora MySQL 호환 db.r8g.large 인스턴스에 대한 것입니다. DBInstanceClassMemory는 17179869184바이트입니다. max_connections의 현재 값은 1000입니다.

결과 예시:

max_connections = GREATEST(195.56,1000) = 1000

참고: 16GiB 메모리가 있는 이 db.r8g.large 인스턴스 클래스의 최대 연결 수는 기본값과 같습니다.

max_connections 파라미터 늘리기

참고: max_connections 값을 기본값 이상으로 높이는 것은 모범 사례가 아닙니다. 대신 DB 인스턴스 규모를 조정하십시오.

DB 인스턴스 규모를 조정하지 않고 max_connections 값을 늘리기로 선택한 경우 다음 단계를 완료하십시오.

  1. 사용자 지정 DB 인스턴스 파라미터 그룹을 만듭니다.
  2. 파라미터 그룹을 DB 인스턴스와 연결합니다.
  3. max_connections 파라미터 값을 늘립니다.
    참고: max_connections 값을 크게 설정해도 중단은 발생하지 않습니다.

인스턴스 스케일 업

max_connections 파라미터의 최댓값을 초과할 경우 DB 인스턴스 클래스 규모를 조정하는 것이 모범 사례입니다. 규모 조정 시 DB 인스턴스가 중단될 수 있습니다.

모범 사례를 사용하여 max_connections 파라미터 조정

DB 클러스터의 버퍼 풀 및 쿼리 캐시 설정을 변경한 경우 DB 인스턴스의 사용 가능한 메모리 증가 또는 감소를 고려하여 연결 할당량을 조정하십시오.

max_connections 파라미터를 각 DB 인스턴스에서 열 것으로 예상되는 최대 연결 수보다 약간 높게 설정하십시오.

Performance Insights를 활성화하면 성능 스키마가 자동으로 활성화됩니다. 성능 스키마가 활성화되면 기본 max_connections 값을 사용하는 것이 모범 사례입니다. 성능 스키마 메모리 구조는 서버 구성에 따라 자동으로 크기가 조정됩니다.

중요: Performance Insights는 2026년 6월 30일에 서비스가 종료됩니다. 2026년 6월 30일 이전에 Database Insights의 고급 모드로 업그레이드할 수 있습니다. 업그레이드하지 않으면 Performance Insights를 사용하는 DB 클러스터는 Database Insights의 표준 모드로 기본 설정됩니다. Database Insights의 고급 모드만 실행 계획과 온디맨드 분석을 지원합니다. 클러스터가 표준 모드로 기본 설정된 경우 콘솔에서 이러한 기능을 사용하지 못할 수 있습니다. 고급 모드를 활성화하려면 Amazon RDS용 Database Insights의 고급 모드 활성화Amazon Aurora용 Database Insights의 고급 모드 활성화를 참조하십시오.

Amazon RDS Proxy 사용

여전히 오류가 발생하면 Amazon RDS Proxy for Aurora를 사용하여 애플리케이션의 규모 조정 기능을 개선하십시오.

관련 정보

Amazon RDS for MySQL 또는 Aurora MySQL 호환 버전에서 ‘Got an error reading communication packets’ 오류를 해결하려면 어떻게 해야 합니까?

AWS 공식업데이트됨 8달 전