Defini um tempo limite de gerenciamento de workloads (WLM) para uma consulta do Amazon Redshift, mas a consulta continua em execução após a expiração desse período
Descrição resumida
O tempo limite do WLM é aplicável a consultas somente durante a fase de execução da consulta. Quando o WLM não encerra uma consulta quando esperado, geralmente é porque a consulta passou algum tempo em estágios diferentes do estágio de execução. Por exemplo, a consulta pode esperar para ser analisada ou reescrita, esperar por um bloqueio ou esperar por um lugar na fila do WLM. Ou a consulta pode chegar ao estágio de retorno ou ir para outra fila.
Resolução
Ao consultar STV_RECENTS, starttime é a hora em que a consulta entrou no cluster, e não a hora em que ela começa a ser executada. Quando a consulta está no estado Em execução em STV_RECENTS, ela está ativa no sistema. No entanto, a consulta não usa recursos do nó de computação até entrar no status STV_INFLIGHT. Para obter mais informações sobre planejamento de consultas, consulte Planejamento de consulta e fluxo de trabalho de execução.
Para visualizar o status de uma consulta em execução, consulte STV_INFLIGHT em vez de STV_RECENTS:
select \* from STV\_INFLIGHT where query = your\_query\_id;
Para obter mais informações sobre os estágios da consulta, execute a seguinte consulta:
select \* from SVL\_QUERY\_REPORT where query = your\_query\_id ORDER BY segment, step, slice;
Use a tabela STV_EXEC_STATE para encontrar o estado atual de todas as consultas que estão sendo executadas ativamente nos nós de computação:
select \* from STV\_EXEC\_STATE where query = your\_query\_id ORDER BY segment, step, slice;
A seguir estão os motivos comuns pelos quais uma consulta pode parecer ser executada por mais tempo do que o período de tempo limite do WLM.
A consulta está na fase de “retorno”
Há duas etapas de “retorno”. Verifique STV_EXEC_STATE para ver se a consulta entrou em uma dessas fases de retorno:
- O retorno ao nó líder a partir dos nós de computação
- O retorno ao cliente a partir do nó líder
Uma reversão está em andamento
Uma operação de linguagem de manipulação de dados (DML) pode encontrar um erro e reverter. Essa operação pode não aparecer como “interrompida” porque já está em processo de reversão. Você pode consultar STV_EXEC_STATE para ver reversões e encontrar mais informações em STL_UNDONE.
A consulta passa tempo na fila antes de ser executada
Consulte STV_WLM_QUERY_STATE para ver o tempo de espera:
select \* from STV\_WLM\_QUERY\_STATE where query = your\_query\_id;
A consulta está aguardando um bloqueio
Se a consulta estiver visível em STV_RECENTS, mas não em STV_WLM_QUERY_STATE, então talvez ela esteja aguardando um bloqueio e não tenha entrado na fila. Para mais informações, consulte Como detectar e liberar bloqueios no Amazon Redshift?
Uma consulta saltou para outra fila
Se uma consulta de leitura atingir o tempo limite na fila do WLM atual, então a consulta será enviada para a próxima fila do WLM. Ou se houver uma regra de monitoramento de consulta que especifique uma ação de salto, a consulta será enviada para a próxima fila do WLM. Para confirmar se a consulta foi para a próxima fila, conclua a seguinte consulta com base no seu cenário:
Para evitar que as consultas saltem para outra fila, configure a fila do WLM ou as regras de monitoramento de consultas do WLM. Para obter mais informações sobre saltos de consulta, consulte Salto na fila de consultas do WLM.
Um problema de rede ou firewall
Se um servidor do Amazon Redshift tiver um problema de comunicação com seu cliente, talvez o servidor esteja preso no estado de “retorno ao cliente”. Verifique se há conflitos com componentes de rede, como configurações de firewall on-premises de entrada, regras de grupos de segurança de saída ou regras de lista de controle de acesso à rede (ACL da rede) de saída. Para obter mais informações, consulte Conexão de fora do Amazon EC2: problema de tempo limite do firewall.
Um problema com o cluster
Problemas no próprio cluster, como problemas de hardware, podem fazer com que a consulta congele. Quando a consulta congela devido a problemas de cluster, o cluster está no status de “falha de hardware”. Para recuperar um cluster de nó único, restaure um snapshot. Em clusters de vários nós, os nós com falha são substituídos automaticamente.
Informações relacionadas
Ajustar a performance da consulta
Analisar e melhorar as consultas