Amazon Redshift에서 쿼리가 중단된 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 10월 15일

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: 쿼리에 사용할 수 있는 대기열이 없음

쿼리 모니터링 규칙에 “홉” 작업이 지정된 경우 쿼리가 호핑될 수 있습니다. 쿼리가 호핑되면 WLM은 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 구성 설정을 확인하십시오. 클러스터 파라미터 그룹 및 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 로그를 확인합니다.

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 콘솔에서 [이벤트(Events)] 탭을 선택합니다.

내부 처리 오류

STL_ERROR 테이블에는 Amazon Redshift에서 발생한 내부 처리 오류가 기록됩니다. SQL 오류 또는 메시지는 STL_ERROR 테이블에 기록되지 않습니다.

내부 오류로 인해 쿼리가 중단되었는지 확인하려면 STL_ERROR 항목을 확인하십시오.

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

ASSERT 오류

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


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?