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