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.
Para exibir a atividade e o status de suas assinaturas, vá para a página Ganchos de serviço.
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.
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.