Compartilhar via


Solucionar problemas com ganchos de serviço

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

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

Exibir 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, o que é útil para depurar um serviço ou assinatura problemático.

  1. Para exibir a atividade e o status de suas assinaturas, vá para a página Ganchos de serviço.

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

  2. Para exibir a atividade detalhada de uma assinatura, incluindo dados completos de solicitação, resposta e carga de evento, selecione uma assinatura na tabela e selecione Histórico.

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

Falhas de assinatura e liberdade condicional (restrito)

Tipos de falha

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

  • Falhas de terminal
  • Falhas transitórias
  • Falhas duradouras

Falhas de terminal

A única falha de terminal é o código de status HTTP 410 (Gone). Quando uma assinatura vê uma Falha de Terminal, ela é automaticamente desativada, independentemente de seu status 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. As falhas transitórias incluem os seguintes códigos:

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

Sequência de tentativas para falhas transitórias

Repetir # Tempo de espera
Antes de repetir 1 aguarde ~1 segundo
Antes de repetir 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 repetir 6 aguarde ~32 segundos (atraso total de 63 segundos)
Antes de repetir 7 Aguarde ~60 segundos (tempo máximo de recuo, atraso total de 123 segundos)
Antes de repetir 8 Aguarde ~60 segundos (tempo máximo de recuo, 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 assinatura interromperá a tentativa de enviar a notificação e tratará a notificação como se tivesse visto 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 assinatura vê uma falha duradoura, ela é colocada em liberdade condicional.

Avaliação

Enquanto estiver em liberdade condicional, uma assinatura é 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 condicional, ela será restaurada para um estado totalmente habilitado.

Sequência de sete tentativas máximas enquanto a assinatura está em liberdade condicional

Quando uma assinatura está em condicional, todos os novos eventos são perdidos. Quando uma nova tentativa for bem-sucedida, a assinatura será habilitada e os eventos serão publicados novamente.

Repetir # Tempo de espera
Antes de repetir 1 aguarde ~20 minutos
Antes de repetir 2 Aguarde ~40 minutos (tempo total de experiência de 1 hora)
Antes de repetir 3 Aguarde ~1 hora e 20 minutos (tempo total de estágio probatório de 2,33 horas)
Antes de repetir 4 Aguarde ~2 horas 40 minutos (tempo total de estágio probatório de 5 horas)
Antes de repetir 5 Aguarde ~5 horas e 20 minutos (tempo total de estágio probatório de 10,33 horas)
Antes de repetir 6 Aguarde ~10 horas e 40 minutos (tempo total de estágio probatório de 21 horas)
Antes de repetir 7 Aguarde ~15 horas (tempo máximo de recuo, tempo total de experiência de 36 horas)

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

Perguntas Frequentes

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

R: O limite de carga útil é de 2 MB. Cargas maiores causam degradação no desempenho e na confiabilidade. Como prática recomendada, os ganchos de serviço devem limitar o conteúdo a 2 MB ou menos.

P: O que significa o status Habilitado (restrito)?

R: Uma assinatura torna-se restrita se ocorrerem muitas falhas. Habilitado (restrito) é o mesmo que estar em liberdade condicional.

P: O que significa o status Desabilitado (devido a falhas)?

R: Uma assinatura é desativada automaticamente 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. A seguir estão exemplos de cada tipo de falha.

  • Transitório: 408 (Tempo limite da solicitação), 502 (Gateway incorreto), 503 (Serviço indisponível), 504 (Tempo limite do gateway)
  • Terminal: 410 (Gone)
  • Duradouras: todas as falhas que não são transitórias ou terminais

P: O que significa o status Desabilitado (projeto de saída do usuário)?

R: O usuário que criou a assinatura não é mais um membro da equipe.

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

R: Verifique os seguintes itens:

  • Confirmar se a assinatura está habilitada

  • 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, somente os administradores de projeto têm essas permissões. Para concedê-las diretamente a outros usuários, você pode usar a ferramenta de linha de comando ou a API REST de Segurança.

P: Posso criar assinaturas programaticamente?

R: Sim, use APIs REST.