io/aurora_respond_to_client - Amazon Aurora

io/aurora_respond_to_client

io/aurora_respond_to_client 이벤트는 스레드가 결과 세트를 클라이언트에 반환하기 위해 대기 중일 때 발생합니다.

지원되는 엔진 버전

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

  • Aurora MySQL 버전 2

버전 2.07.7, 2.09.3 및 2.10.2 이전 버전의 이 대기 이벤트에 유휴 시간이 잘못 포함되어 있습니다.

컨텍스트

io/aurora_respond_to_client 이벤트는 스레드가 결과 세트를 클라이언트에 반환하기 위해 대기 중임을 나타냅니다.

쿼리 처리가 완료되고 결과가 애플리케이션 클라이언트로 다시 반환되는 중입니다. 그러나 DB 클러스터에 네트워크 대역폭이 부족하기 때문에 스레드가 결과 집합을 반환하기 위해 대기 중입니다.

대기 증가의 가능한 원인

io/aurora_respond_to_client 이벤트가 정상보다 많이 나타나 성능 문제를 나타내는 경우 일반적인 원인은 다음과 같습니다.

워크로드에 대해 부족한 DB 인스턴스 클래스

DB 클러스터에서 사용하는 DB 인스턴스 클래스에는 워크로드를 효율적으로 처리하는 데 필요한 네트워크 대역폭이 없습니다.

대규모 결과 세트

쿼리가 더 많은 수의 행을 반환하기 때문에 반환되는 결과 집합의 크기가 증가했습니다. 결과 집합이 클수록 네트워크 대역폭을 더 많이 소모합니다.

클라이언트에 대한 로드 증가

클라이언트에 CPU 압력, 메모리 압력 또는 네트워크 포화가 있을 수 있습니다. 클라이언트에 대한 로드가 증가하면 Aurora MySQL DB 클러스터에서 데이터 수신이 지연됩니다.

네트워크 대기 시간 증가

Aurora MySQL DB 클러스터와 클라이언트 간에 네트워크 대기 시간이 늘어날 수 있습니다. 네트워크 대기 시간이 높을수록 클라이언트가 데이터를 수신하는 데 필요한 시간이 늘어납니다.

작업

대기 이벤트의 원인에 따라 다른 작업을 권장합니다.

이벤트를 일으키는 세션 및 쿼리 식별

성능 개선 도우미를 사용하여 io/aurora_respond_to_client 대기 이벤트에 의해 차단된 쿼리를 표시할 수 있습니다. 일반적으로 보통에서 중요한 로드가 있는 데이터베이스에는 대기 이벤트가 있습니다. 성능이 최적이면 대기 이벤트가 허용될 수 있습니다. 성능이 최적이 아닌 경우 데이터베이스가 가장 많은 시간을 소비하는 위치를 확인합니다. 가장 높은 로드를 일으키는 대기 이벤트를 살펴보고 데이터베이스와 애플리케이션을 최적화하여 이러한 이벤트를 줄일 수 있는지 확인합니다.

높은 로드에 책임이 있는 SQL 쿼리를 찾으려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

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

  3. DB 인스턴스를 선택합니다. DB 인스턴스에 대한 성능 개선 도우미 대시보드가 표시됩니다.

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

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

    차트에는 로드에 책임이 있는 SQL 쿼리가 나열됩니다. 목록의 맨 위에 있는 쿼리가 가장 큰 책임이 있습니다. 병목 현상을 해결하려면 다음 명령문에 집중하세요.

성능 개선 도우미를 통한 문제 해결에 대한 유용한 개요는 AWS 데이터베이스 블로그 게시물, 성능 개선 도우미를 통해 Amazon Aurora MySQL 워크로드 분석을 참조하세요.

DB 인스턴스 클래스 크기 조정

NetworkReceiveThroughputNetworkTransmitThroughput과 같은 네트워크 처리량과 관련된 Amazon CloudWatch 지표 값의 증가가 있는지 확인합니다. DB 인스턴스 클래스 네트워크 대역폭에 도달하면 DB 클러스터를 수정하여 DB 클러스터가 사용하는 DB 인스턴스 클래스를 크기 조정할 수 있습니다. 네트워크 대역폭이 큰 DB 인스턴스 클래스는 클라이언트에 데이터를 보다 효율적으로 반환합니다.

Amazon CloudWatch 지표 모니터링에 대한 자세한 내용은 Amazon RDS 콘솔에서 지표 보기 섹션을 참조하세요. DB 인스턴스 클래스에 대한 자세한 내용은 Aurora DB 인스턴스 클래스 섹션을 참조하세요. DB 클러스터 수정에 대한 자세한 내용은 Amazon Aurora DB 클러스터 수정 섹션을 참조하세요.

예기치 않은 결과가 있는지 워크로드 확인

DB 클러스터의 워크로드를 확인하고 예상치 못한 결과가 나오지 않는지 확인합니다. 예를 들어 예상보다 많은 수의 행을 반환하는 쿼리가 있을 수 있습니다. 이 경우 Innodb_rows_read와 같은 성능 개선 도우미 카운터 지표를 사용할 수 있습니다. 자세한 내용은 성능 개선 도우미 카운터 섹션을 참조하세요.

리더 인스턴스를 통해 워크로드 배포

Aurora 복제본을 통해 읽기 전용 워크로드를 배포할 수 있습니다. Aurora 복제본을 더 많이 추가하여 수평으로 확장할 수 있습니다. 이렇게 하면 네트워크 대역폭에 대한 제한이 증가할 수 있습니다. 자세한 내용은 Amazon Aurora DB 클러스터 섹션을 참조하세요.

SQL_BUFFER_RESULT 한정자 사용

명령문이 클라이언트에 반환되기 전에 결과를 임시 테이블로 강제하는 SELECT 문에 SQL_BUFFER_RESULT 한정자를 추가할 수 있습니다. 이 한정자는 쿼리가 io/aurora_respond_to_client 대기 상태에 있어 InnoDB 잠금이 해제되지 않는 경우 성능 문제에 도움이 될 수 있습니다. 자세한 내용은 MySQL 설명서의 SELECT 문을 참조하세요.