Bagikan melalui


Memecahkan masalah hook layanan

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Gunakan artikel ini untuk panduan pemecahan masalah umum dan jawaban atas tanya jawab umum (FAQ).

Melihat masalah aktivitas dan debug

Halaman Service Hooks di admin akses web menunjukkan aktivitas terbaru Anda (14 hari terakhir) untuk setiap langganan, dan apakah langganan diaktifkan, dinonaktifkan, atau dibatasi.

Anda dapat mengakses riwayat terperinci tentang langganan termasuk data permintaan/respons terperinci, yang berguna untuk men-debug layanan atau langganan yang bermasalah.

  1. Untuk melihat aktivitas dan status langganan Anda, buka halaman Service Hooks .

    Cuplikan layar memperlihatkan tampilan aktivitas dan status langganan.

  2. Untuk melihat aktivitas terperinci untuk langganan, termasuk permintaan penuh, respons, dan data payload peristiwa, pilih langganan dalam tabel, lalu pilih Riwayat.

    Cuplikan layar memperlihatkan tampilan aktivitas terperinci untuk langganan.

Kegagalan dan percobaan langganan (dibatasi)

Jenis kegagalan

Kegagalan dari pemberitahuan Service Hooks dikelompokkan ke dalam kategori berikut:

  • Kegagalan Terminal
  • Kegagalan Sementara
  • Kegagalan Yang Bertahan

Kegagalan Terminal

Satu-satunya Kegagalan Terminal adalah Kode Status HTTP 410 (Hilang). Saat langganan melihat Kegagalan Terminal, langganan akan dinonaktifkan secara otomatis terlepas dari status sebelumnya.

Kegagalan Sementara

Saat langganan melihat Kegagalan Sementara, langganan mencoba mengirim ulang pemberitahuan hingga delapan kali, dengan peningkatan penundaan antara setiap upaya. Kegagalan Sementara mencakup kode berikut:

  • 408 (Batas Waktu Permintaan)
  • 502 (Gateway Buruk)
  • 503 (Layanan Tidak Tersedia)
  • 504 (Waktu Habis Gateway)

Urutan percobaan ulang untuk kegagalan sementara

Pengulangan # Waktu tunggu
Sebelum mencoba kembali 1 tunggu ~1 detik
Sebelum mencoba kembali 2 tunggu ~2 detik (total penundaan 3 detik)
Sebelum mencoba kembali 3 tunggu ~4 detik (total penundaan 7 detik)
Sebelum mencoba kembali 4 tunggu ~8 detik (total penundaan 15 detik)
Sebelum mencoba kembali 5 tunggu ~16 detik (total penundaan 31 detik)
Sebelum mencoba kembali 6 tunggu ~32 detik (total penundaan 63 detik)
Sebelum mencoba kembali 7 tunggu ~60 detik (waktu backoff maks, total penundaan 123 detik)
Sebelum mencoba kembali 8 tunggu ~60 detik (waktu backoff maks, total penundaan 183 detik)

Jika pemberitahuan melelahkan semua percobaan ulangnya dan terus melihat Kegagalan Sementara untuk setiap upaya, langganan berhenti mencoba mengirim pemberitahuan, dan memperlakukan pemberitahuan seolah-olah melihat Kegagalan Yang Bertahan Lama.

Kegagalan Yang Bertahan

Kegagalan Berkelanjutan mencakup semua kode kegagalan HTTP lainnya, misalnya: 404 (Tidak Ditemukan), 500 (Kesalahan Server Internal), dan sebagainya.

Saat langganan melihat Kegagalan Bertahan, langganan ditempatkan pada percobaan.

Masa percobaan

Saat dalam masa percobaan, langganan dibatasi dalam jumlah pemberitahuan yang dapat dikirimnya. Jika langganan terus mencapai Kegagalan Bertahan, maka langganan akan semakin terbatas, dan akhirnya dinonaktifkan. Jika langganan menerima respons yang berhasil saat dalam masa percobaan, langganan akan dipulihkan ke status diaktifkan sepenuhnya.

Urutan tujuh percobaan ulang maksimum saat langganan sedang dalam masa percobaan

Saat langganan dalam pemeriksaan, setiap peristiwa baru akan hilang. Setelah coba lagi berhasil, langganan diaktifkan, dan peristiwa diterbitkan lagi.

Pengulangan # Waktu tunggu
Sebelum mencoba kembali 1 tunggu ~20 menit
Sebelum mencoba kembali 2 tunggu ~40 menit (total waktu percobaan 1 jam)
Sebelum mencoba kembali 3 tunggu ~1 jam 20 menit (total waktu pemeriksaan 2,33 jam)
Sebelum mencoba kembali 4 tunggu ~2 jam 40 menit (total waktu percobaan 5 jam)
Sebelum mencoba kembali 5 tunggu ~5 jam 20 menit (total waktu percobaan 10,33 jam)
Sebelum mencoba kembali 6 tunggu ~10 jam 40 menit (total waktu percobaan 21 jam)
Sebelum mencoba kembali 7 tunggu ~15 jam (waktu backoff maks, total waktu pemeriksaan 36 jam)

Setelah tujuh kali mencoba kembali, status langganan diatur ke DisabledBySystem jika memberi tahu konsumen gagal.

Tanya Jawab Umum

T: Berapa batas payload service-hook?

J: Batas payload adalah 2 MB. Payload yang lebih besar akan menyebabkan penurunan performa dan keandalan. Sebagai praktik terbaik, service hook harus membatasi payload hingga 2 MB atau kurang.

T: Apa arti status Diaktifkan (dibatasi) ?

A: Langganan menjadi dibatasi jika terlalu banyak kegagalan terjadi. Diaktifkan (dibatasi) sama dengan sedang dalam masa percobaan.

T: Apa arti status Dinonaktifkan (karena kegagalan) ?

J: Langganan secara otomatis dinonaktifkan setelah serangkaian kegagalan berturut-turut selama periode yang lama atau kegagalan terminal ditemui. Jenis kegagalan sementara dicoba kembali beberapa kali sebelum dinyatakan gagal. Jenis kegagalan yang bertahan tidak dicoba kembali. Berikut ini adalah contoh setiap jenis kegagalan.

  • Sementara: 408 (Batas Waktu Permintaan), 502 (Gateway Buruk), 503 (Layanan Tidak Tersedia), 504 (Batas Waktu Gateway)
  • Terminal: 410 (Hilang)
  • Bertahan: Semua kegagalan yang tidak sementara atau terminal

T: Apa arti status Dinonaktifkan (proyek kiri pengguna) ?

A: Pengguna yang membuat langganan tidak lagi menjadi anggota tim.

T: Apa yang harus saya coba jika hook layanan tidak berfungsi?

A: Periksa item berikut:

  • Mengonfirmasi bahwa langganan diaktifkan

  • Mengonfirmasi pengaturan langganan sudah benar (baik filter peristiwa maupun tindakan)

  • Lihat sejarahnya, terutama jika ada kegagalan

T: Dapatkah saya memberi pengguna proyek reguler kemampuan untuk melihat dan mengelola langganan kait layanan untuk proyek?

A: Secara default, hanya administrator proyek yang memiliki izin ini. Untuk memberikannya kepada pengguna lain secara langsung, Anda dapat menggunakan alat baris perintah ataupun REST API Keamanan .

T: Bisakah saya membuat langganan secara terprogram?

A: Ya, gunakan REST API.