Amazon Redshift에서 쿼리가 취소된 이유는 무엇인가요?

5분 분량
0

Amazon Redshift에서 쿼리가 취소되고 오류 메시지가 표시되었습니다.

간략한 설명

Amazon Redshift에서는 다음과 같은 이유로 쿼리를 취소할 수 있습니다.

  • Amazon Redshift 워크로드 관리(WLM) 쿼리 모니터링 규칙 설정
  • 명령문 시간 제한 값
  • ABORT, CANCEL 또는 TERMINATE 요청
  • 네트워크 문제
  • 클러스터 유지 관리 업그레이드
  • 내부 처리 오류
  • ASSERT 오류

쿼리가 중지되지 않도록 하려면 다음 단계를 완료합니다.

해결 방법

Amazon Redshift WLM 쿼리 모니터링 규칙 설정

WLM 쿼리 모니터링 규칙(QMR)을 생성하여 대기열에 대한 지표 기반 성능 경계를 정의합니다. 또는 쿼리가 WLM 시간 제한을 초과할 때 Amazon Redshift가 취하는 작업을 지정합니다. 예르 들어, 60초 이상의 임계값 동안 실행되는 쿼리를 취소하는 규칙을 만들 수 있습니다.

예시 1: 쿼리 모니터링 규칙에 지정된 중단 작업

쿼리 모니터링 규칙에 지정된 중단 작업으로 인해 쿼리가 취소되면 쿼리는 다음 오류를 반환합니다.

"ERROR: Query (500029) cancelled by WLM abort action of Query Monitoring Rule "testrule"."

“중단” 작업으로 인해 쿼리가 취소되었는지 확인하려면 다음 쿼리를 실행합니다.

select * from STL_WLM_RULE_ACTION where action = 'abort';

쿼리 출력에는 “중단” 작업으로 취소된 모든 쿼리가 나열됩니다. 쿼리 ID가 출력에 나열된다면, WLM QMR 파라미터의 시간 제한을 늘립니다.

예시 2: 건너뛸 쿼리에 사용할 수 있는 대기열이 없습니다.

쿼리 모니터링 규칙에 “hop” 작업이 지정되어 있다면 쿼리를 건너뛸 수 있습니다. 쿼리를 건너뛰면 WLM은 WLM 대기열 할당 규칙에 따라 일치하는 다음 대기열로 쿼리의 라우팅을 시도합니다. 쿼리가 대기열 정의와 일치하지 않으면 쿼리가 취소됩니다. 취소된 쿼리는 기본 대기열에 재할당되지 않습니다. 자세한 내용은 wlm_json_configuration 파라미터의 속성을 참조합니다.

참고: 수동 WLM 컨피그레이션에서만 쿼리를 건너뛸 수 있습니다.

쿼리를 건너뛰었지만 일치하는 대기열이 없을 때 취소된 쿼리는 다음 오류 메시지를 반환합니다.

"ERROR: Query (500104) canceled on user's request and ran out of wlm queues for restart."

이 오류 메시지와 함께 쿼리가 취소되면 다음 쿼리를 실행하여 사용자 정의 대기열을 확인합니다.

select * from stl_wlm_query where query=<query-id>;

출력에서 service_class 6~13 항목에는 사용자 정의 대기열이 포함됩니다. 예를 들어, service_class 6은 WLM 구성의 Queue1을 나열하고 service_class 7은 Queue2를 나열할 수 있습니다.

다음 쿼리를 실행하여 service_class 매핑에 대한 자세한 내용을 확인합니다.

select * from stv_wlm_service_class_config where service_class>5;

대기열 매핑 정보를 가져온 후, Amazon Redshift 콘솔에서 WLM 구성을 확인합니다. 대기열이 WLM 구성과 일치하는지 확인합니다. 쿼리는 사용자 그룹 또는 쿼리 그룹 구성에 일치하고 사용할 수 있는 대기열이 있는 경우에만 건너뛸 수 있습니다. 자세한 내용은 WLM 쿼리 큐 건너뛰기를 참조합니다.

명령문 시간 제한 값

statement_timeout 값은 Amazon Redshift가 쿼리를 종료하기 전에 쿼리가 실행되는 최대 시간입니다. 명령문 제한 시간을 초과하면 세션 중에 제출된 쿼리가 취소되고 다음 오류 메시지가 표시됩니다.

"ERROR: Query (150) cancelled on user's request"

명령문 시간 제한으로 인해 쿼리가 취소되었는지 확인하려면 다음 쿼리를 실행합니다.

select * from SVL_STATEMENTTEXT where text ilike '%set%statement_timeout%to%' and pid in (select pid from STL_QUERY where query = <queryid>);

명령문 시간 제한은 클러스터 파라미터 그룹에서도 설정할 수 있습니다. 추가 확인을 위해 클러스터 파라미터 그룹 및 모든 statement_timeout 구성 설정을 확인합니다. 자세한 내용은 파라미터 그룹 수정을 참조합니다.

ABORT, CANCEL 또는 TERMINATE 요청

특정 쿼리가 사용자(예: 수퍼유저)에 의해 중지 또는 취소되었는지 확인하려면 쿼리 ID로 다음 쿼리를 실행합니다.

select * from SVL_STATEMENTTEXT where text ilike '%cancel%' and xid
    in (select xid from STL_QUERY where query = <queryid>);
select * from SVL_STATEMENTTEXT where text ilike '%abort%' and xid in (select xid from STL_QUERY where query = <queryid>);

쿼리가 출력에 보인다면 사용자 요청에 따라 쿼리가 중지 또는 취소된 것입니다.

참고: 사용자는 자신의 세션만 종료할 수 있습니다. 수퍼유저는 모든 세션을 종료할 수 있습니다.

또한 사용자가 해당 프로세스(쿼리가 실행되는 프로세스)를 취소하거나 종료할 때도 쿼리를 중지할 수 있습니다. 다음은 쿼리를 취소하거나 종료할 수 있는 프로세스의 예시입니다.

이러한 명령으로 프로세스를 취소하거나 종료하면 SVL_TERMINATE에 항목이 기록됩니다. 세션 종료되 인해 쿼리가 중지되었는지 확인하려면 SVL_TERMINATE 로그를 확인합니다. 다음 쿼리를 실행하여 SVL_TERMINATE 로그를 확인합니다.

select * from SVL_TERMINATE where pid=(select pid from STL_QUERY where query=500534);

네트워크 문제

기본 네트워크 문제로 인해 쿼리가 취소될 수 있습니다. 네트워크 문제로 인해 쿼리가 취소되는지 확인하려면 다음 쿼리를 실행하여 STL_CONNECTION_LOG 항목을 확인합니다.

select * from STL_CONNECTION_LOG where pid in (select pid from STL_QUERY where query = <query_id>);

STL_CONNECTION_LOG에는 인증 시도와 네트워크 연결 또는 연결 해제를 기록합니다. 쿼리가 출력에 보인다면 네트워크 연결 문제로 인해 쿼리가 취소되었을 수 있습니다.

클러스터 유지 관리 업그레이드

쿼리가 실행 중일 때 예약된 유지 관리가 발생하면 쿼리가 종료, 롤백되므로 클러스터를 재부팅해야 합니다. 유지 관리 기간을 피하려면 장기 실행 작업(예: 대용량 데이터 로드 또는 VACUUM 작업)을 예약합니다. 자세한 내용은 유지 관리 기간 관련 일정을 참조합니다.

Amazon Redshift 클러스터에서 유지 관리가 이루어졌는지 확인하려면 Amazon Redshift 콘솔에서 이벤트 탭을 선택합니다.

내부 처리 오류

STL_ERROR 테이블에는 Amazon Redshift에서 생성된 내부 처리 오류를 기록합니다. STL_ERROR 테이블에는 SQL 오류나 메시지를 기록하지 않습니다.

내부 오류로 인해 쿼리가 취소되었는지 확인하려면 다음 쿼리를 실행하여 STL_ERROR 항목을 확인합니다.

select * from STL_ERROR where userid=<user id>;

ASSERT 오류

ASSERT 오류로 인해 쿼리가 중지될 수 있습니다. ASSERT 오류는 쿼리 자체에 문제가 있을 때 발생할 수 있습니다. 패치 업그레이드 후에 ASSERT 오류가 발생한다면 Amazon Redshift를 최신 클러스터 버전으로 업데이트합니다. 그리고 클러스터 버전 기록을 확인합니다. 또는 클러스터 버전을 롤백할 수 있습니다.

AWS 공식
AWS 공식업데이트됨 10달 전