io/socket/sql/client_connection - Amazon Aurora

io/socket/sql/client_connection

io/socket/sql/client_connection 이벤트는 스레드가 새 연결을 처리하고 있을 때 발생합니다.

지원되는 엔진 버전

이 대기 이벤트 정보는 다음 엔진 버전에서 지원됩니다.

  • Aurora MySQL 버전 2 및 3

컨텍스트

io/socket/sql/client_connection 이벤트는 mysqld가 들어오는 새 클라이언트 연결을 처리하기 위해 스레드를 만드는 중임을 나타냅니다. 이 시나리오에서는 연결이 스레드가 할당될 때까지 기다리는 동안 새 클라이언트 연결 요청 서비스 처리 속도가 느려집니다. 자세한 내용은 MySQL 서버(mysqld) 섹션을 참조하세요.

대기 증가의 가능한 원인

이 이벤트가 정상보다 많이 발생해 성능 문제를 일으킬 수 있는 경우 일반적인 원인은 다음과 같습니다.

  • 애플리케이션에서 Amazon RDS 인스턴스로 새 사용자 연결이 급증했습니다.

  • 네트워크, CPU 또는 메모리가 제한되기 때문에 DB 인스턴스에서 새 연결을 처리할 수 없습니다.

작업

io/socket/sql/client_connection이 데이터베이스 활동을 지배한다고 해서 반드시 성능 문제를 나타내는 것은 아닙니다. 유휴 상태가 아닌 데이터베이스에서는 대기 이벤트가 항상 맨 위에 있습니다. 성능이 저하될 때만 작동합니다. 대기 이벤트의 원인에 따라 다른 작업을 권장합니다.

문제가 있는 세션 및 쿼리 식별

DB 인스턴스에 병목 현상이 발생하는 경우 첫 번째 작업은 이를 유발하는 세션과 쿼리를 찾는 것입니다. 유용한 블로그 게시물은 성능 개선 도우미를 통해 Amazon Aurora MySQL 워크로드 분석을 참조하세요.

병목 현상을 일으키는 세션 및 쿼리를 식별하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 Performance Insights(성능 개선 도우미)를 선택합니다.

  3. DB 인스턴스를 선택합니다.

  4. 데이터베이스 로드(Database load)에서 대기별 조각(Slice by wait)을 선택합니다.

  5. 페이지 하단에서 상위 SQL(Top SQL)을 선택합니다.

    목록 맨 위에 있는 쿼리로 인해 데이터베이스에 대한 로드가 가장 높습니다.

연결 관리를 위한 모범 사례 준수

연결을 관리하려면 다음 전략을 고려하세요.

리소스가 제한되는 경우 인스턴스 확장

다음 리소스에서 제한의 예를 찾아보세요.

  • CPU

    CPU 사용량이 높은지 Amazon CloudWatch 지표를 확인하세요.

  • 네트워크

    CloudWatch 지표, network receive throughputnetwork transmit throughput의 값이 증가했는지 확인합니다. 인스턴스가 인스턴스 클래스의 네트워크 대역폭 제한에 도달한 경우 RDS 인스턴스를 더 높은 인스턴스 클래스 유형으로 확장하는 것이 좋습니다. 자세한 내용은 Aurora DB 인스턴스 클래스 섹션을 참조하세요.

  • 여유 메모리

    CloudWatch 지표 FreeableMemory가 하락했는지 확인합니다. 또한 향상된 모니터링을 켜는 것이 좋습니다. 자세한 내용은 Enhanced Monitoring을 사용하여 OS 지표 모니터링 섹션을 참조하세요.

상위 호스트 및 상위 사용자 확인

성능 개선 도우미를 사용하여 상위 호스트와 상위 사용자를 확인합니다. 자세한 내용은 성능 개선 도우미 대시보드를 사용한 지표 분석 섹션을 참조하세요.

performance _schema 테이블 쿼리

현재 및 총 연결의 정확한 개수를 얻으려면 performance_schema 테이블을 쿼리합니다. 이 기술을 사용하면 많은 수의 연결을 생성하는 소스 사용자 또는 호스트를 식별할 수 있습니다. 예를 들어 다음과 같이 performance_schema 테이블을 쿼리합니다.

SELECT * FROM performance_schema.accounts; SELECT * FROM performance_schema.users; SELECT * FROM performance_schema.hosts;

쿼리의 스레드 상태 확인

성능 문제가 진행 중인 경우 쿼리의 스레드 상태를 확인합니다. mysql 클라이언트에서 다음 명령을 실행합니다.

show processlist;

요청 및 쿼리 감사

사용자 계정의 요청 및 쿼리의 특성을 확인하려면 AuroraAurora MySQL 고급 감사를 사용합니다. 감사를 활성화하는 방법은 Amazon Aurora MySQL DB 클러스터에서 고급 감사 사용 섹션을 참조하세요.

데이터베이스 연결 풀링

연결 관리를 위해 Amazon RDS Proxy를 사용하는 것이 좋습니다. RDS Proxy를 사용하면 애플리케이션이 데이터베이스 연결을 풀링하고 공유하도록 허용하여 확장 기능을 향상할 수 있습니다. RDS 프록시는 애플리케이션 연결을 유지하면서 예비 DB 인스턴스에 자동으로 연결하여 데이터베이스 장애에 대한 애플리케이션의 복원력을 높입니다. 자세한 내용은 Aurora용 Amazon RDS 프록시 사용 섹션을 참조하세요.