Share via


針對服務勾點進行疑難解答

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

使用本文來取得常見問題的一般疑難解答指引和解答(常見問題)。

檢視活動和偵錯問題

Web 存取管理員中的 [服務勾點] 頁面會顯示您最近每個訂用帳戶的活動(過去 14 天),以及訂用帳戶已啟用、停用或限制。

您可以存取訂用帳戶的詳細歷程記錄,包括詳細的要求/回應數據,這對於偵錯有問題的服務或訂用帳戶很有用。

  1. 若要檢視訂用帳戶的活動和狀態,請移至 [服務勾點 ] 頁面。

    顯示訂用帳戶活動檢視和狀態的螢幕快照。

  2. 若要檢視訂用帳戶的詳細活動,包括完整要求、回應和事件承載數據,請選取數據表中的訂用帳戶,然後選取 [ 歷程記錄]。

    顯示訂用帳戶活動詳細檢視的螢幕快照。

訂用帳戶失敗和緩刑(受限)

失敗類型

來自服務勾點通知的失敗會分組為下列類別:

  • 終端機失敗
  • 暫時性失敗
  • 持久失敗

終端機失敗

唯一的終端機失敗是 HTTP 狀態代碼 410 (已消失)。 當訂用帳戶看到終端機失敗時,無論其先前的狀態為何,它都會自動停用。

暫時性失敗

當訂用帳戶看到暫時性失敗時,它會嘗試重新傳送通知最多八次,每次嘗試之間的延遲增加。 暫時性失敗包括下列程式代碼:

  • 408 (要求逾時)
  • 502 (不正確的閘道)
  • 503 (服務無法使用)
  • 504 (閘道逾時)

暫時性失敗的重試順序

重試# 等待時間
重試 1 之前 wait ~1 秒
重試 2 之前 等候 ~2 秒(總延遲 3 秒)
重試 3 之前 等候 ~4 秒(總延遲 7 秒)
重試前 4 等候 ~8 秒(總延遲為 15 秒)
重試前 5 等候 ~16 秒(總延遲 31 秒)
重試 6 之前 等候 ~32 秒(總延遲 63 秒)
重試 7 之前 等候 ~60 秒(最大輪詢時間,總延遲為 123 秒)
重試 8 之前 等候 ~60 秒(最大輪詢時間,總延遲為 183 秒)

如果通知用盡其所有重試,並繼續看到每次嘗試的暫時性失敗,訂閱會停止嘗試傳送通知,並將通知視為「持續失敗」。

持久失敗

持久失敗包括所有其他 HTTP 失敗碼,例如:404(找不到)、500(內部伺服器錯誤)等等。

當訂用帳戶看到「持久失敗」時,它會放在緩刑

緩刑

在緩刑時,訂用帳戶會受限於可以傳送的通知數目。 如果訂用帳戶持續達到「持續失敗」,則會越來越有限,且最終會停用。 如果訂閱在緩刑時收到成功的回應,則會還原至完全啟用的狀態。

訂用帳戶處於緩刑時,重試次數上限為 7 次的順序

當訂用帳戶處於緩刑狀態時,任何新事件都會遺失。 重試成功之後,就會啟用訂用帳戶,並再次發佈事件。

重試# 等待時間
重試 1 之前 等候 ~20 分鐘
重試 2 之前 等候 ~40 分鐘 (總緩刑時間 1 小時)
重試 3 之前 等候 ~1 小時 20 分鐘(總緩刑時間為 2.33 小時)
重試前 4 等候 ~2 小時 40 分鐘 (總緩刑時間 5 小時)
重試前 5 等候 ~5 小時 20 分鐘 (總緩刑時間 10.33 小時)
重試 6 之前 等候 ~10 小時 40 分鐘 (總緩刑時間 21 小時)
重試 7 之前 等候 ~15 小時(最大輪詢時間,總緩刑時間為 36 小時)

重試七次之後,如果通知取用者失敗,訂用帳戶狀態會設定為 DisabledBySystem

常見問題集

問:服務攔截的承載限制為何?

答: 承載限制為 2 MB。 較大的承載會導致效能及可靠性降低。 最佳做法是,服務掛勾應該將承載限制為 2 MB 或更少。

問:已啟用狀態 (受限制) 是什麼意思?

答: 如果發生太多失敗,訂用帳戶就會受到限制。 已啟用 (受限制) 與在緩刑時相同。

問:狀態停用(因失敗)是什麼意思?

答:在長時間 連續失敗或遇到終端機失敗 之後,訂用帳戶會自動停用。 暫時性失敗 類型會在宣告失敗之前重試數次。 不會重試持久的失敗 類型。 以下是每種失敗類型的範例。

  • 暫時性:408(要求逾時)、502(不正確的網關)、503(服務無法使用)、504(網關逾時)
  • 終端機:410(消失)
  • 持久:非暫時性或終端機的所有失敗

問:狀態為 Disabled (使用者左專案) 代表什麼意思?

答: 建立訂用帳戶的使用者不再是小組的成員。

問:如果服務勾點無法運作,該怎麼辦?

答: 檢查下列專案:

  • 確認訂用帳戶已啟用

  • 確認訂用帳戶設定正確 (事件篩選和動作)

  • 查看歷程記錄,特別是在發生失敗時

問:我可以授與一般專案用戶檢視及管理服務鏈接訂閱專案的能力嗎?

答: 根據預設,只有專案管理員具有這些許可權。 若要向其他使用者直接授與這些權限,您可以使用命令列工具安全性 REST API。

問:我是否可以以程序設計方式建立訂用帳戶?

答: 是,使用 REST API