解决常见问题的故障排除指南
本文提供有关客户可能会遇到的一些常见问题的故障排除指南。 打开 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 | 由于客户端无法足够快地接收缓冲的消息而被服务关闭 |
故障排除指南
PingTimeout
和 SlowClient
指示你的某些客户端无法承受当前流量负载。 如果可以提高客户端性能,建议控制消息发送速度并调查客户端跟踪。
ConnectionCountLimitReached
Web PubSub 的不同层对并发连接有硬性限制。 此错误指示流量超出了支持的连接计数。 有关定价的详细信息,请参阅 Web PubSub 定价。
解决方案
纵向扩展到付费层(标准或高级)以拥有至少 1000 个连接,或横向扩展到支持更多连接的更多单元。