Risolvere i problemi relativi agli hook del servizio
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Usare questo articolo per indicazioni generali sulla risoluzione dei problemi e risposte alle domande frequenti.
Visualizzare i problemi relativi all'attività e al debug
La pagina Service Hooks nell'amministratore dell'accesso Web mostra l'attività recente (ultimi 14 giorni) per ogni sottoscrizione e se una sottoscrizione è abilitata, disabilitata o limitata.
È possibile accedere alla cronologia dettagliata di una sottoscrizione, inclusi i dati dettagliati di richiesta/risposta, utili per il debug di un servizio o una sottoscrizione problematica.
Per visualizzare l'attività e lo stato delle sottoscrizioni, passare alla pagina Hook del servizio.
Per visualizzare attività dettagliate per una sottoscrizione, inclusi i dati completi relativi a richiesta, risposta e payload degli eventi, selezionare una sottoscrizione nella tabella e quindi selezionare Cronologia.
Errori e probe delle sottoscrizioni (con restrizioni)
Tipi di errore
Gli errori di una notifica degli hook del servizio vengono raggruppati nelle categorie seguenti:
- Errori del terminale
- Errori temporanei
- Errori durevoli
Errori del terminale
L'unico errore del terminale è il codice di stato HTTP 410 (Gone). Quando una sottoscrizione rileva un errore del terminale, viene disabilitata automaticamente indipendentemente dal relativo stato precedente.
Errori temporanei
Quando una sottoscrizione rileva un errore temporaneo, tenta di inviare nuovamente la notifica fino a otto volte, con un ritardo crescente tra ogni tentativo. Gli errori temporanei includono i codici seguenti:
- 408 (timeout richiesta)
- 502 (Gateway non valido)
- 503 (Servizio non disponibile)
- 504 (timeout gateway)
Sequenza di tentativi per gli errori temporanei
Riprova # | Tempo di attesa |
---|---|
Prima di riprovare 1 | attendere ~1 secondo |
Prima di riprovare 2 | wait ~2 seconds (ritardo totale di 3 secondi) |
Prima di riprovare 3 | wait ~4 seconds (ritardo totale di 7 secondi) |
Prima di riprovare 4 | wait ~8 seconds (ritardo totale di 15 secondi) |
Prima di riprovare 5 | wait ~16 seconds (ritardo totale di 31 secondi) |
Prima di riprovare 6 | wait ~32 seconds (ritardo totale di 63 secondi) |
Prima di riprovare 7 | wait ~60 seconds (max backoff time, total delay of 123 seconds) |
Prima di riprovare 8 | wait ~60 seconds (max backoff time, total delay of 183 seconds) |
Se la notifica esaurisce tutti i tentativi e continua a visualizzare un errore temporaneo per ogni tentativo, la sottoscrizione smette di inviare la notifica e considera la notifica come se fosse stato rilevato un errore permanente.
Errori durevoli
Gli errori irreversibili includono tutti gli altri codici di errore HTTP, ad esempio 404 (non trovato), 500 (errore interno del server) e così via.
Quando una sottoscrizione rileva un errore duraturo, viene inserita in prova.
Prova
Durante la verifica, una sottoscrizione è limitata al numero di notifiche che può inviare. Se la sottoscrizione continua a raggiungere gli errori durevoli, diventa sempre più limitata e infine disabilitata. Se la sottoscrizione riceve una risposta con esito positivo durante il probe, viene ripristinata in uno stato completamente abilitato.
Sequenza di sette tentativi massimi mentre la sottoscrizione è in prova
Quando una sottoscrizione è in prova, eventuali nuovi eventi vengono persi. Al termine di un nuovo tentativo, la sottoscrizione viene abilitata e gli eventi vengono nuovamente pubblicati.
Riprova # | Tempo di attesa |
---|---|
Prima di riprovare 1 | attendere ~20 minuti |
Prima di riprovare 2 | attendere circa 40 minuti (tempo totale di prova di 1 ora) |
Prima di riprovare 3 | wait ~1 hour 20 minutes (total probe time of 2,33 hours) |
Prima di riprovare 4 | attendere circa 2 ore 40 minuti (tempo totale di prova di 5 ore) |
Prima di riprovare 5 | attendere circa 5 ore 20 minuti (tempo totale di prova di 10,33 ore) |
Prima di riprovare 6 | attendere circa 10 ore 40 minuti (tempo totale di prova di 21 ore) |
Prima di riprovare 7 | wait ~15 hours (max backoff time, total probeation time of 36 hours) |
Dopo sette tentativi, lo stato della sottoscrizione viene impostato su DisabledBySystem se la notifica al consumer ha esito negativo.
Domande frequenti
D: Qual è il limite di payload di un hook del servizio?
R: Il limite di payload è 2 MB. I payload più grandi causano riduzioni di prestazioni e affidabilità. Come procedura consigliata, gli hook del servizio devono limitare il payload a 2 MB o meno.
D: Qual è il significato dello stato Abilitato (con restrizioni) ?
R: Una sottoscrizione viene limitata se si verificano troppi errori. Enabled (con restrizioni) equivale a essere sottoposto a probe.
D: Qual è il significato dello stato Disabilitato (a causa di errori)
R: Una sottoscrizione viene disabilitata automaticamente dopo una serie di errori consecutivi durante un periodo prolungato o un errore del terminale. I tipi di errori temporanei vengono ritentati più volte prima di essere dichiarati un errore. I tipi di errore durevoli non vengono ritentati. Di seguito sono riportati esempi di ogni tipo di errore.
- Temporaneo: 408 (timeout richiesta), 502 (gateway non valido), 503 (servizio non disponibile), 504 (timeout del gateway)
- Terminale: 410 (Via)
- Durevole: tutti gli errori che non sono temporanei o terminali
D: Qual è il significato dello stato Disabilitato (progetto lasciato dall'utente)
R: l'utente che ha creato la sottoscrizione non è più membro del team.
D: Cosa è consigliabile provare se un hook del servizio non funziona?
R: Controllare gli elementi seguenti:
Verificare che la sottoscrizione sia abilitata
Verificare che le impostazioni della sottoscrizione siano corrette (sia i filtri degli eventi che le azioni)
Esaminare la cronologia, soprattutto in caso di errori
D: È possibile concedere a un utente normale del progetto la possibilità di visualizzare e gestire le sottoscrizioni hook del servizio per un progetto?
R: Per impostazione predefinita, solo gli amministratori del progetto dispongono di queste autorizzazioni. Per concederle direttamente ad altri utenti, è possibile usare lo strumento della riga di comando o l'API REST Sicurezza.
D: È possibile creare sottoscrizioni a livello di codice?
R: Sì, usare le API REST.