概要
HTTP“502 错误的网关”和“503 服务不可用”是打开 Azure 应用服务中托管的应用时可以获取的常见错误。 本文可帮助你排查这些错误。
这些错误的原因通常是应用程序级问题,例如:
- 请求处理需要很长时间。
- 应用使用高内存或 CPU。
- 一个异常正在阻止应用程序响应。
故障排除包括三个按顺序排列的任务:
- 观察和监视应用程序行为。
- 收集数据。
- 缓解问题。
应用服务提供每个任务的选项。
观察和监视应用程序行为
Azure 应用服务提供了多种观察应用行为的方法。
跟踪服务运行状况
Azure 在应用服务中公开服务中断和性能下降。 可以在 Azure 门户中跟踪服务的运行状况。 有关详细信息,请参阅 Azure 门户中的“查看服务运行状况通知”。
监控您的应用
你可以监视你的应用,找出它是否有任何问题。 在应用的 Azure 门户页上,选择“ 监视>指标”。 “ 指标 ”下拉菜单显示可以添加的指标。
你可能想要监视应用的一些指标包括:
- 平均内存工作集
- CPU 时间
- 内存工作集
- 请求
有关详细信息,请参见:
收集数据
使用诊断或 Kudu 调试控制台收集数据。
使用诊断功能
应用服务提供智能和交互式体验,可帮助你对应用进行故障排除,无需配置。 诊断功能可以发现问题,并指导你了解故障排除和解决的正确信息。
若要访问应用服务诊断,请转到 Azure 门户中的应用服务应用或应用服务环境。 在左侧菜单中,选择“ 诊断”并解决问题。
使用 Kudu 调试控制台
应用服务附带了一个控制台,可用于调试、浏览和上传文件。 它还提供可用于获取有关环境的信息的 JSON 终结点。 此控制台是应用的 Kudu 仪表板的一部分。
在 Azure 管理门户中,转到你的应用。 在左侧菜单中,选择 “开发工具>高级工具”。 选择 “打开” 以在新浏览器窗口中打开 Kudu。
默认情况下,应用域包含以下元素:<app-name>-<random-hash>.。<region> 还可以通过转到链接 https://<app-name>-<random-hash>.scm.<region>.azurewebsites.net/来访问控制面板。 要获取随机哈希和区域值,请在应用程序 Overview 中复制 Default domain。
Kudu 提供:
- 应用程序的环境设置。
- 日志流。
- 诊断信息转储。
- 调试控制台,可在其中运行 PowerShell cmdlet 和基本 DOS 命令。
如果应用程序引发第一次机会异常,则可以使用 Kudu 和 Sysinternals 工具 ProcDump 创建内存转储。 这些内存转储是进程的快照,可帮助解决应用更复杂的问题。
有关 Kudu 中提供的功能的详细信息,请参阅 Kudu 仪表板介绍的博客文章 - 应用服务上的 WordPress。
缓解问题
请考虑这些选项来解决这些问题。
缩放应用
在 Azure 应用服务中,为了提高性能和吞吐量,可以调整运行应用程序的规模。 扩展应用涉及两个相关动作:
- 将应用服务计划更改为更高的定价层
- 切换到更高的定价层后配置某些设置
有关缩放的详细信息,请参阅缩放 Azure 应用服务中的应用。
还可以选择在多个实例上运行应用程序。 此选项为你提供了更多的处理功能,还为你提供了一些容错能力。 如果进程在一个实例上关闭,另一个实例将继续为请求提供服务。
可以将缩放设置为手动或自动缩放。
使用自动修复
自动修复功能会根据您选择的设置重启应用的工作进程。 这些设置包括配置更改、请求、基于内存的限制或执行请求所需的时间。
在大多数情况下,回收过程是从问题中恢复最快的方法。 尽管您始终可以直接在 Azure 门户中重启应用程序,但自动恢复功能可以为您自动完成这一操作。 只需在应用的根 Web.config 文件中添加一些触发器。 即使您的应用程序不是 .NET 应用程序,这些设置也会以同样的方式工作。
有关详细信息,请参阅 Azure 应用服务诊断概述。
重启应用
重启应用通常是从一次性问题中恢复的最简单方法。 在应用的 Azure 门户 页上,可以停止或重启应用。
还可以使用 Azure PowerShell 管理应用。 有关详细信息,请参阅 使用 Azure PowerShell管理 Azure 资源。
第三方联系人免责声明
Microsoft 会提供第三方联系信息来帮助你查找有关本主题的其他信息。 该联系信息可能会在不通知的情况下更改。 Microsoft 不保证第三方联系信息的准确性。