解决常见问题的故障排除指南

本文提供有关客户可能会遇到的一些常见问题的故障排除指南。 打开 live trace tool 或从 Azure Monitor 收集数据时,可以检查列出的错误。

来自 HttpHandlerUnexpectedResponse 的 404

可能的错误

Sending message during operation hub:<your-hub>,event:connect,type:sys,category:connections,requestType:Connect got unexpected response with status code 404.

根本原因

此错误指示事件已在 Web PubSub 设置中注册,但无法从已注册上游 URL 获得响应。

故障排除指南

  • 检查上游服务器函数或方法是否适合。
  • 检查是否要注册此事件。 否则请将其从 Web PubSub 端的中心设置中删除。

来自 HttpHandlerUnexpectedResponse 的 500

可能的错误

  • Sending message during operation handshake got unexpected response with status code 500. Detail: Get error from upstream: 'Request is denied as target server is invalid'
  • Sending message during operation hub:<your-hub>,event:connect,type:sys,category:connections,requestType:Connect got unexpected response with status code 500.

根本原因

此错误指示事件请求从已注册的上游获得 500 响应。

故障排除指南

  • 检查上游端日志,以调查在处理报告的事件期间是否存在某些错误。

AbuseProtectionResponseMissingAllowedOrigin

可能的错误

  • Abuse protection for 'https://<upstream-host>/<upstream-path>' missing allowed origins: .

根本原因

Web PubSub 按照 CloudEvents 滥用保护的要求来验证上游 Webhook。 每个已注册的上游 Webhook URL 都会进行验证。 WebHook-Request-Origin 请求头设置为服务域名 <web-pubsub-name>.webpubsub.azure.com,它会要求含标头 WebHook-Allowed-Origin 的响应包含此域名或 *

故障排除指南

查看上游端代码,以确保当上游收到来自 Web PubSub 服务的 OPTIONS 预检请求时,系统会按照包含预期标头 WebHook-Allowed-Origin 和值的规则正确处理该请求。

此外,你可以更新到便利服务器 SDK,它会自动为你处理 Abuse Protection

来自 AbuseProtectionResponseInvalidStatusCode 的“401 未授权”或“403 禁止访问”

可能的错误

  • Abuse protection for 'https://<upstream-host>/<upstream-path>' failed: 401.
  • Abuse protection for 'https://<upstream-host>/<upstream-path>' failed: 403.

根本原因

此错误指示 Abuse Protection 请求从已注册的上游 URL 获得 401/403 响应。 有关详细信息,请参阅 Abuse Protection

故障排除指南

  • 检查上游端是否启用了任何身份验证,例如,WebPubSubTrigger Azure 函数的 App Keys 是否设置正确,详见示例
  • 检查上游端日志以调查 Abuse Protection 请求是如何处理的。

客户端连接断开

当客户端连接到 Azure Web PubSub 时,客户端与 Azure Web PubSub 之间的持久性连接有时可能会因不同的原因而断开。 此部分介绍导致此类连接断开的几种可能性,并提供一些有关如何确定根本原因的指导。

可以从 Azure 门户检查指标 Connection Close Count

可能的原因和根本原因

原因 根本原因
普通 由客户端关闭
ClosedByAppServer 由服务器触发的 Rest API 调用(例如 CloseConnection)关闭
ServiceReload 由于定期维护或后端自动缩放而被服务关闭
PingTimeout 由于客户端状态不健康而被服务关闭,该服务未收到任何常规 ping
SlowClient 由于客户端无法足够快地接收缓冲的消息而被服务关闭

故障排除指南

PingTimeoutSlowClient 指示你的某些客户端无法承受当前流量负载。 如果可以提高客户端性能,建议控制消息发送速度并调查客户端跟踪

ConnectionCountLimitReached

Web PubSub 的不同层对并发连接有硬性限制。 此错误指示流量超出了支持的连接计数。 有关定价的详细信息,请参阅 Web PubSub 定价

解决方案

纵向扩展到付费层(标准或高级)以拥有至少 1000 个连接,或横向扩展到支持更多连接的更多单元。