Resolver problemas de gerenciamento de cargas de trabalho do BigQuery
Neste documento, mostramos como resolver problemas comuns com o gerenciamento de cargas de trabalho do BigQuery, incluindo alocação e atribuições de reservas, erros de configuração de reserva, contenção de slots e monitoramento de reservas.
Para visualizar e gerenciar reservas e gráficos de recursos administrativos, verifique se
você tem os papéis necessários do Identity and Access Management (IAM), como
Leitor de recursos do BigQuery (roles/bigquery.resourceViewer) ou
Administrador de recursos do BigQuery (roles/bigquery.resourceAdmin) no
projeto de administração. Saiba mais em Controle de acesso com o
IAM.
Resolver problemas com reservas
Use as informações a seguir para resolver problemas comuns com reservas, como erros ao adicionar slots, por que uma reserva não é usada para um job do BigQuery ou reservas não reconhecidas.
Não é possível adicionar mais slots ao tamanho da reserva
Se você encontrar erros como Failed to allocate slots for reservation in the
current system state ou Failed to update reservation: Failed to allocate slots
for reservation ao tentar adicionar mais slots à sua reserva, geralmente é um problema temporário. Para reduzir o problema, faça o seguinte:
- Tente novamente com um número menor de slots.
- Se a tentativa com um número menor de slots falhar, aguarde 15 minutos e tente novamente.
Se, depois de tentar várias vezes e aguardar 30 minutos, você ainda receber o mesmo erro, entre em contato com o Cloud Customer Care.
Não há cota suficiente para concluir esta solicitação
Se a mensagem de erro indicar There is insufficient quota to complete this
request, a solicitação excedeu o limite de cota definido para o projeto.
Para resolver esse erro, siga um destes procedimentos:
- Adicione um número menor de slots à reserva para que a solicitação não exceda o limite de cota.
- Solicite um aumento de cota na região correspondente. Para mais informações, consulte Solicitar um aumento de cota.
Reserva não usada pelo BigQuery para executar um job
Há vários cenários em que um job pode ser executado usando preços sob demanda ou um pool de slots compartilhados sem custo financeiro, em vez de usar a reserva que você criou.
A consulta e a reserva estão em regiões diferentes
As reservas são recursos regionais. Uma consulta é executada no mesmo local que as tabelas referenciadas nela.
Se o local de uma tabela não corresponder ao local da reserva, a consulta não usará a reserva e será executada usando preços sob demanda (ou o pool de slots compartilhados sem custo financeiro para jobs de carregamento e exportação em lote qualificados).
A reserva foi criada, mas o projeto não foi atribuído a ela
Para usar os slots em uma reserva, crie uma atribuição que atribua o projeto, a pasta ou a organização à reserva específica. Verifique se o projeto tem uma atribuição correspondente para a reserva.
Incompatibilidade de tipo de serviço
Selecione o tipo de serviço correto ao criar uma atribuição. Caso contrário, os jobs não vão usar a reserva.
Por exemplo, se você selecionar PIPELINE como o tipo de serviço, todos os jobs de consulta serão executados usando preços on demand. Mude o tipo de atribuição para QUERY para que os jobs de consulta
sejam executados usando a reserva.
Consultas de múltiplas instruções
Se você estiver executando consultas de várias instruções, o objeto de job pai não terá uma reserva associada a ele, mesmo que os jobs filhos sejam executados em uma reserva.
Para confirmar se o job realmente usou uma reserva, verifique os metadados do job filho.
Como recuperar resultados em cache
Quando um job de consulta recupera resultados em cache, o campo de reserva fica vazio porque o BigQuery não realiza cálculos e busca os resultados diretamente da tabela temporária.
Operações de modificação de linha da captura de dados alterados
Se você tiver
tabelas de captura de dados alterados (CDC),
o BigQuery vai aplicar as modificações de linha pendentes no intervalo
max_staleness como jobs em segundo plano que usam o tipo de atribuição
BACKGROUND. Se não houver atribuições BACKGROUND, esses jobs vão usar preços sob demanda. Considere criar uma atribuição BACKGROUND para o projeto para evitar
custos inesperados sob demanda. É possível identificar esses jobs pela substring queueworker_cdc_background_merge_coalesce no identificador do job.
Reservas não reconhecidas identificadas no projeto
O BigQuery tem reservas que representam um pool de slots compartilhados sem custo financeiro para determinadas operações no BigQuery.
default-pipeline
Por padrão, o carregamento ou a exportação em lote de dados no BigQuery
usa um pool de slots compartilhados sem custo financeiro. Ao inspecionar esses jobs de carregamento ou extração, o
campo de reserva mostra default-pipeline.
Não há cobranças pelo uso do pool de slots compartilhado. Se você quiser um desempenho consistente e previsível, considere comprar uma reserva de PIPELINE.
Resolver problemas em tarefas de gerenciamento de reservas
Os erros a seguir podem ocorrer ao criar ou atualizar uma reserva.
O tamanho da reserva ou os slots de valor de referência precisam ser múltiplos de 50
Mensagem de erro
Max reservation size can only be configured in multiples of 50, except when covered by excess commitments.Baseline slots can only be configured in multiples of 50, except when covered by excess commitments.
Causa
Os slots sempre são escalonados automaticamente para um múltiplo de 50. O BigQuery escalona verticalmente os slots com base no uso real e arredonda para o incremento de 50 slots mais próximo. Quando não há compromisso ou se o compromisso não pode cobrir os aumentos, só é possível aumentar os slots de referência e de escalonamento automático em múltiplos de 50.
Se baseline slots ou max reservation size - baseline slots não for um múltiplo
de 50 (e não estiver coberto por compromissos de capacidade excedente), a reserva
não poderá ser escalonar verticalmente até o tamanho máximo, resultando nesse erro.
Resolução
Escolha uma destas opções:
- Compre mais compromissos de capacidade para cobrir os aumentos de slots.
- Escolha slots de referência e máximos que sejam incrementos de 50.
Não é possível usar o máximo de slots sem ativar a imparcialidade baseada em reserva
Mensagem de erro
Cannot use max slots without enabling reservation-based fairness.
Causa
Você está tentando configurar uma capacidade máxima de reserva, por exemplo,
max_slots ou reservas previsíveis, o que exige que a imparcialidade baseada em reserva
esteja ativada no projeto que possui a reserva.
Resolução
É necessário ativar a imparcialidade baseada em reservas no projeto.
Resolver problemas de contenção de slots
A contenção de slots pode acontecer quando não há slots suficientes para executar todos os jobs, causando problemas de desempenho. Para analisar se a degradação do desempenho decorre de aumentos na carga de trabalho ou de mudanças na configuração do ambiente, é possível comparar dois intervalos do sistema em reservas e projetos.
Para resolver problemas de contenção de slots, use as etapas e as práticas recomendadas a seguir.
Se você seguiu essas práticas recomendadas, mas ainda está com problemas de desempenho do job, solicite suporte.
Picos de simultaneidade de jobs
Use a visualização detalhada nos gráficos de recursos administrativos para verificar se há um aumento repentino nas execuções de jobs com picos simultâneos de uso de slots. Esses picos podem indicar que muitos jobs estão disputando os slots disponíveis na sua reserva.
Prática recomendada:otimize as consultas que consomem muitos recursos ou aumente a capacidade de slots da sua reserva. Para mais informações sobre como otimizar o desempenho de consultas, consulte Otimizar a computação de consultas.
Uso intenso de slots
Use a visualização detalhada para verificar se há aumento na duração dos jobs, especialmente se houver jobs que excedam a capacidade máxima da reserva. O uso consistentemente alto de slots pode indicar uma contenção de slots em andamento.
Prática recomendada:verifique as consultas usando o filtro de contenção de slots do explorador de jobs para identificar as consultas que consomem mais slots e otimizá-las.
Duração longa do job
Se os jobs estiverem demorando muito mais para serem concluídos, verifique a visualização detalhada. A alta simultaneidade de jobs e os picos de uso de slots podem indicar contenção de slots.
Prática recomendada:isole jobs críticos pausando temporariamente jobs menos importantes ou reduzindo a taxa geral de envio de jobs.
Mensagens de contenção de slot
A tabela de insights pode
exibir mensagens como There were NUMBER jobs detected with
slot_contention in the reservation. que indicam problemas de contenção de slots.
Verifique o explorador de jobs para analisar detalhes
sobre os jobs específicos sinalizados nessas mensagens.
Prática recomendada:otimize as consultas identificadas ou ajuste a alocação de slots da sua reserva.
Resolver problemas no monitoramento de reservas
As seções a seguir descrevem como resolver problemas comuns ao monitorar as reservas do BigQuery e o uso de slots.
As métricas de uso de slots não correspondem a INFORMATION_SCHEMA
Se você encontrar discrepâncias entre as métricas de uso de slots em gráficos de recursos
e dados de INFORMATION_SCHEMA, tente o seguinte:
- Reduza a granularidade. Mude a granularidade do gráfico para intervalos de 1 segundo, em vez de intervalos de 1 hora.
- Alinhar agregação. Verifique se você está usando métodos de agregação que
se alinham entre os gráficos de recursos e os dados do
INFORMATION_SCHEMA. Por exemplo, para refletir melhor o pico de uso nos gráficos de recursos, mude a agregação de métricas para p99 ou p90 de forma consistente.
Os slots emprestados aparecem quando os slots inativos estão desativados
Os gráficos de monitoramento podem mostrar um valor diferente de zero para borrowed_slots, mesmo que
ignore_idle_slots=true esteja definido para uma ou mais reservas. Essa configuração
impede que uma reserva pegue emprestado slots inativos, mas não impede que ela
empreste os slots não utilizados para outras reservas.
Esses slots emprestados aparecem nos seguintes casos:
Empréstimo para outras reservas. Uma reserva com
ignore_idle_slots=truepode emprestar os slots de valor de referência não utilizados para outras reservas no mesmo projeto de administração, região e edição que permitem o empréstimo de slots inativos (ignore_idle_slots=false). Se todas as reservas em um projeto de administração, região e edição tiveremignore_idle_slots=true, os slots inativos não serão compartilhados entre elas.Por exemplo, suponha que a Reserva A tenha 100 slots, 0 de uso e esteja configurada com
ignore_idle_slots=true. A reserva B está no mesmo projeto de administração, região e edição, tem 100 slots, precisa de 150 slots para a carga de trabalho e está configurada comignore_idle_slots=false. A reserva B pode pegar emprestados 50 slots inativos da reserva A para atender às necessidades dela. Quando isso ocorre, os gráficos de monitoramento informam 50lent_slotspara a Reserva A e 50borrowed_slotspara a Reserva B.Uso excedendo a capacidade. Se o uso de slots de uma reserva exceder temporariamente a capacidade (slots de base + escalonamento automático), os gráficos de monitoramento vão mostrar essa diferença como
borrowed_slots. Esse comportamento pode ocorrer mesmo em reservas comignore_idle_slots=true.
De vez em quando, o uso de slots pode exceder a soma do valor de referência mais os slots dimensionados. Você não vai receber cobranças pelo uso de slots maior que o valor de referência mais os slots escalonados.
Os slots emprestados aparecem antes que uma reserva seja totalmente usada
Os painéis do Monitoring usam dados de amostra, que podem não refletir com precisão o tempo exato de uso do slot em um intervalo de amostragem.
Para uma análise mais precisa do uso de slots, consulte as colunas relacionadas a slots
ociosos, como as colunas borrowed_slots e lent_slots na
visualização INFORMATION_SCHEMA.RESERVATIONS_TIMELINE.
A seguir
- Saiba mais sobre as diferenças do BigQuery no Cloud de Confiance em comparação com o Google Cloud.
- Saiba mais sobre o gerenciamento de cargas de trabalho usando reservas.
- Saiba como gerenciar reservas de carga de trabalho.
- Saiba como monitorar reservas e usar gráficos de recursos administrativos.
- Conheça outros recursos de solução de problemas do BigQuery.