Partilhar via


Solucionar problemas de ganchos de serviço

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

Use este artigo para obter orientações gerais de solução de problemas e respostas a perguntas freqüentes (FAQs).

Ver problemas de atividade e depuração

A página Ganchos de Serviço no administrador de acesso à Web mostra sua atividade recente (últimos 14 dias) para cada assinatura e se uma assinatura está habilitada, desabilitada ou restrita.

Você pode acessar o histórico detalhado sobre uma assinatura, incluindo dados detalhados de solicitação/resposta, que são úteis para depurar um serviço ou assinatura problemático.

  1. Para ver a atividade e o estado das suas subscrições, aceda à página Ganchos de Serviço.

    Captura de ecrã a mostrar a vista da atividade e o estado das subscrições.

  2. Para ver a atividade detalhada de uma subscrição, incluindo dados completos de pedido, resposta e carga útil de eventos, selecione uma subscrição na tabela e, em seguida, selecione Histórico.

    Captura de ecrã a mostrar a vista detalhada da atividade de uma subscrição.

Falhas de subscrição e liberdade condicional (restrita)

Tipos de falha

As falhas de uma notificação de ganchos de serviço são agrupadas nas seguintes categorias:

  • Falhas no terminal
  • Falhas transitórias
  • Falhas duradouras

Falhas no terminal

A única falha do terminal é o código de status HTTP 410 (Gone). Quando uma subscrição vê uma Falha de Terminal, é automaticamente desativada, independentemente do seu estado anterior.

Falhas transitórias

Quando uma assinatura vê uma falha transitória, ela tenta reenviar a notificação até oito vezes, com um atraso crescente entre cada tentativa. Falhas transitórias incluem os seguintes códigos:

  • 408 (Tempo limite de solicitação)
  • 502 (Gateway incorreto)
  • 503 (Serviço indisponível)
  • 504 (Tempo limite do gateway)

Sequência de novas tentativas para falhas transitórias

Retentar # Tempo de espera
Antes de repetir 1 aguarde ~1 segundo
Antes de tentar novamente 2 Aguarde ~2 segundos (atraso total de 3 segundos)
Antes de repetir 3 Aguarde ~4 segundos (atraso total de 7 segundos)
Antes de repetir 4 Aguarde ~8 segundos (atraso total de 15 segundos)
Antes de repetir 5 Aguarde ~16 segundos (atraso total de 31 segundos)
Antes de tentar novamente 6 Aguarde ~32 segundos (atraso total de 63 segundos)
Antes de tentar novamente 7 Aguarde ~60 segundos (tempo máximo de backoff, atraso total de 123 segundos)
Antes de repetir 8 aguarde ~60 segundos (tempo máximo de backoff, atraso total de 183 segundos)

Se a notificação esgotar todas as suas novas tentativas e continuar a ver uma Falha Transitória para cada tentativa, a subscrição para de tentar enviar a notificação e trata a notificação como se visse uma Falha Duradoura.

Falhas duradouras

As Falhas Duradouras incluem todos os outros códigos de falha HTTP, por exemplo: 404 (Não Encontrado), 500 (Erro Interno do Servidor) e assim por diante.

Quando uma subscrição vê uma Falha Duradoura, é colocada em liberdade condicional.

Liberdade condicional

Enquanto estiver em liberdade condicional, uma subscrição é limitada no número de notificações que pode enviar. Se a assinatura continuar a atingir Falhas Duradouras, ela ficará cada vez mais limitada e, eventualmente, desativada. Se a assinatura receber uma resposta bem-sucedida durante a liberdade condicional, ela será restaurada para um estado totalmente habilitado.

Sequência de sete tentativas máximas enquanto a subscrição está em liberdade condicional

Quando uma subscrição está em liberdade condicional, quaisquer novos eventos são perdidos. Quando uma nova tentativa é bem-sucedida, a assinatura é habilitada e os eventos são publicados novamente.

Retentar # Tempo de espera
Antes de repetir 1 aguarde ~20 minutos
Antes de tentar novamente 2 esperar ~40 minutos (tempo total de liberdade condicional de 1 hora)
Antes de repetir 3 esperar ~1 hora e 20 minutos (tempo total de liberdade condicional de 2,33 horas)
Antes de repetir 4 esperar ~2 horas 40 minutos (tempo total de liberdade condicional de 5 horas)
Antes de repetir 5 espera ~5 horas 20 minutos (tempo total de liberdade condicional de 10,33 horas)
Antes de tentar novamente 6 esperar ~10 horas 40 minutos (tempo total de liberdade condicional de 21 horas)
Antes de tentar novamente 7 esperar ~15 horas (tempo máximo de backoff, tempo total de liberdade condicional de 36 horas)

Após sete tentativas, o status da assinatura será definido como DisabledBySystem se a notificação do consumidor falhar.

FAQs

P: Qual é o limite de carga útil de um gancho de serviço?

R: O limite de carga útil é de 2 MB. Os payloads maiores resultam numa degradação no desempenho e na fiabilidade. Como melhor prática, os hooks de serviço devem limitar o payload a 2 MB ou menos.

P: O que significa o estado Ativado (restrito)?

R: Uma subscrição torna-se restrita se ocorrerem demasiadas falhas. Ativado (restrito) é o mesmo que estar em liberdade condicional.

P: O que significa o estado Desativado (devido a falhas)?

R: Uma subscrição é automaticamente desativada após uma série de falhas consecutivas durante um período prolongado ou uma falha de terminal é encontrada. Os tipos de falhas transitórias são repetidos várias vezes antes de serem declarados uma falha. Os tipos de falha duradoura não são repetidos. Seguem-se exemplos de cada tipo de falha.

  • Transitório: 408 (tempo limite de solicitação), 502 (gateway incorreto), 503 (serviço indisponível), 504 (tempo limite de gateway)
  • Terminal: 410 (Gone)
  • Duradouro: Todas as falhas que não são transitórias ou terminais

P: O que significa o status Desativado (projeto deixado pelo usuário)?

R: O utilizador que criou a subscrição já não é membro da equipa.

P: O que devo tentar se um gancho de serviço não estiver funcionando?

R: Verifique os seguintes itens:

  • Confirme se a subscrição está ativada

  • Confirme se as configurações de assinatura estão corretas (filtros de eventos e ações)

  • Olhe para o histórico, especialmente se houver falhas

P: Posso conceder a um usuário regular do projeto a capacidade de exibir e gerenciar assinaturas de gancho de serviço para um projeto?

R: Por padrão, apenas os administradores de projeto têm essas permissões. Para as conceder diretamente a outros utilizadores, pode utilizar a ferramenta de linha de comandos ou a API REST de Segurança.

P: Posso criar subscrições programaticamente?

R: Sim, use APIs REST.