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.
Para ver a atividade e o estado das suas subscrições, aceda à página Ganchos de Serviço.
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.
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.