Este tópico descreve o recurso de diagnóstico inteligente para jobs SQL do MaxCompute. O recurso fornece resultados de diagnóstico e sugestões de otimização para ajudar a resolver erros de jobs ou melhorar o desempenho de consultas, além de explicar como visualizar e interpretar esses diagnósticos. Como o desempenho das consultas depende de muitos fatores, o diagnóstico inteligente identifica apenas certas anomalias e oferece recomendações parciais.
Para obter um diagnóstico de jobs mais abrangente e orientações de ajuste, consulte Melhores práticas de diagnóstico do Logview e Ajuste de SQL.
Limites
Atualmente, há suporte a diagnósticos apenas para jobs SQL.
Visualizar resultados e sugestões do diagnóstico inteligente
Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.
-
No painel de navegação à esquerda, escolha .
NotaO intervalo de tempo padrão para consultar jobs é de uma hora. Ajuste esse intervalo conforme necessário com base no tempo de execução real dos jobs do seu projeto.
Clique em na tag de resultado de diagnóstico na coluna Intelligent Diagnostics do job desejado para acessar a página Job Insights. Visualize explicações detalhadas do diagnóstico e sugestões de otimização na aba Job Summary.
Descrições dos resultados de diagnóstico
-
A coluna Intelligent Diagnostics estará vazia se qualquer uma das condições a seguir se aplicar:
O job foi executado normalmente, sem anomalias detectadas.
O job foi concluído no mesmo dia. Os resultados do diagnóstico inteligente são gerados no dia seguinte e marcados adequadamente.
O job foi executado antes de 1º de novembro de 2023.
O job SQL foi executado em uma das seguintes regiões: China (Hong Kong), China East 2 Finance Cloud, China North 2 Finance Cloud (apenas por convite), China North 2 Ali Gov Cloud 1, China South 1 Finance Cloud, Japão (Tóquio), Singapura, Malásia (Kuala Lumpur), Indonésia (Jacarta), Alemanha (Frankfurt), Reino Unido (Londres), EUA (Vale do Silício), EUA (Virgínia), Emirados Árabes Unidos (Dubai) ou Arábia Saudita (Riade - Região Parceira).
Para visualizar diagnósticos detalhados, acesse a página Jobs e clique em Insights na coluna Actions do job desejado para acionar manualmente o diagnóstico.
Uma tag vermelha indica diagnóstico de erro de job. Uma tag laranja indica diagnóstico de desempenho.
Interpretar resultados do diagnóstico inteligente
As seções a seguir explicam o significado dos resultados do diagnóstico inteligente de jobs SQL e suas soluções.
Recursos insuficientes
Um job recebe sinalização de recursos insuficientes se o uso de recursos de computação permanecer abaixo de 95% da quantidade solicitada por mais de cinco minutos.
Em jobs com pagamento conforme o uso, o pool de recursos compartilhados não permite especificar o uso exato. A alocação de recursos ocorre sob demanda mediante preempção entre usuários. Se houver execução simultânea de muitos jobs, a alta contenção pode impedir que seu job obtenha os recursos solicitados.
Em jobs baseados em assinatura, grandes volumes de dados, altas solicitações de recursos ou baixa prioridade do job podem causar espera por recursos.
Acesse a página Job Insights do seu job. Na aba Resource Consumption, revise o consumo de recursos e a alocação de cota do seu job em horários específicos para identificar a causa raiz. Em seguida, otimize a execução da tarefa ajustando a prioridade do job ou gerenciando os recursos de computação conforme necessário.
Skew de dados
O skew de dados é um problema comum na computação de big data. Frequentemente, manifesta-se quando um job fica travado em 99% de conclusão, dando a impressão de que a execução parou. Isso ocorre quando a distribuição de dados é desigual: alguns workers terminam rapidamente, enquanto outros demoram muito mais. Na era atual de crescimento explosivo de dados, o skew de dados impacta severamente a eficiência de programas distribuídos. Detecte-o cedo, analise sua causa e resolva-o prontamente.
O MaxCompute sinaliza um job por skew de dados se qualquer uma das condições for atendida:
O worker com maior tempo de execução leva pelo menos três vezes o tempo médio dos workers, e o tempo médio excede 30 segundos.
Pelo menos um worker processa três vezes ou mais registros de entrada do que a média dos workers.
O MaxCompute fornece os nomes dos workers (nós) afetados para investigação e ajuste via LogView. Para detalhes, consulte Usar o Logview para visualizar informações de execução de jobs.
Para mais cenários de skew de dados e soluções, consulte Ajuste de skew de dados.
Inchaço de dados
Uma Fuxi Task recebe sinalização de inchaço de dados se sua contagem de registros de saída exceder dez vezes a contagem de registros de entrada.
O MaxCompute fornece o nome da Fuxi Task afetada para investigação e ajuste via LogView. Para detalhes, consulte Usar o Logview para visualizar informações de execução de jobs.
Para mais informações sobre causas e soluções para inchaço de dados, consulte Otimização de inchaço de dados.
Recuo de modo
Os jobs do MaxCompute podem ser executados no modo Query Acceleration (MaxQA) ou no modo padrão.
Jobs com grandes volumes de dados que não retornam resultados de consulta só podem usar o modo NAT. Em condições normais, o tempo de execução permanece estável.
Consultas interativas com pequenos volumes de dados geralmente acionam o modo Query Acceleration, que é mais rápido que o modo NAT. No entanto, o MaxCompute não garante que todos os jobs entrarão no modo Query Acceleration. Se houver recuo para o modo NAT, o tempo de execução poderá exceder as expectativas.
Esse comportamento aplica-se ao MCQA (Query Acceleration 1.0), que usa acionamento automático. O MaxQA (Query Acceleration 2.0) exige a atribuição explícita de um grupo de Quota interativo e não possui mecanismo de acionamento ou recuo automático. Para detalhes, consulte Guia do usuário do Query Acceleration MaxQA.
O MaxCompute determina se um job enfrenta problema de recuo de modo com base no substatus de reexecução da Task. Para executar o job diretamente no modo NAT e evitar falhas ou perda de tempo ao tentar usar o modo de aceleração de consulta, adicione set odps.service.mode=off; à primeira linha do código do job. O MaxQA não suporta desativação por este método.
Tabela pequena do MAPJOIN próxima ao limite de memória
Ao juntar uma tabela grande com uma tabela pequena no MaxCompute, melhore o desempenho da consulta especificando explicitamente a dica mapjoin na instrução SELECT. O mapjoin carrega toda a tabela pequena na memória durante a fase Map. Ele funciona apenas para tabelas pequenas, e a tabela carregada não deve exceder 512 MB de memória. Se o MaxCompute detectar que a tabela pequena está se aproximando desse limite, ele alertará sobre risco potencial de memória do mapjoin. Nesse caso, considere remover o MAPJOIN HINT ou usar o DISTRIBUTED MAPJOIN para evitar estouro de memória e falha do job.
Diagnóstico de mensagens de erro de job
Para jobs com falha, o MaxCompute correlaciona mensagens de erro a categorias conhecidas e fornece descrições e soluções. Atualmente, isso cobre apenas alguns erros relacionados a SQL. Para falhas sem diagnóstico disponível, consulte os códigos de erro para localizar e resolver o problema.
Em caso de dúvidas ou necessidade de ajuda, preencha o formulário de solicitação de grupo do DingTalk para ingressar no grupo da comunidade de desenvolvedores do MaxCompute (ID do grupo DingTalk: 11782920) ou entre em contato com seu grupo de suporte dedicado no DingTalk.
Referências
Para otimizar cálculos de métricas de longo período, consulte Solução de otimização para cálculos de métricas de longo período.
Para analisar recursos no nível de job usando o recurso Job Insights no MaxCompute console, compreender o consumo detalhado de recursos e obter recomendações para reduzir o tempo de execução do job, consulte Melhores práticas para análise de recursos no nível de job.