通过默认云服务域 URL 浏览网站时出错:HTTP 错误 503。 服务不可用

本文提供有关排查出现错误“HTTP 错误 503”的问题的信息。 服务不可用。“访问云服务应用程序时。

原始产品版本:API 管理服务
原始 KB 编号: 4464854

注意

请参阅 Azure 云服务故障排除系列文章,这是实验室的第五个方案。 确保已按照超级转换器应用程序的实验室设置说明 重新创建问题。

症状

虽然 Web 角色“SuperConvertor”处于运行状态,但浏览云服务应用程序 url (http://cloudservicelabs.cloudapp.net/) 时收到 HTTP 错误 503 响应。 重新启动或重置角色实例映像无法解决问题。

服务不可用

HTTP 错误 503。 服务不可用。

故障排除步骤

当应用程序中出现 50x 错误时,这通常意味着服务器端出现了错误。 503 Service Unavailable 服务器错误响应代码指示服务器尚未准备好处理请求。 你必须思考为什么新部署的云服务应用程序突然开始引发此错误。 应用程序是否崩溃? 请求是否到达 IIS 服务器? 服务器负载是否很高?

首先,检查本地 IIS 服务器。 可以使用 RDP 连接到 Web 角色实例,并在本地浏览应用程序。 在本地浏览站点之前,检查应用程序和系统事件查看器日志,以抵消 IIS ApplicationPool 崩溃或任何其他与应用程序相关的异常的可能性。

接下来,检查 如果可以获取有关 HTTP 503 错误的详细信息(例如子状态代码、执行请求所花费的时间等),请将下C:\Resources\directory\{Deployment ID}.SuperConvertor.DiagnosticStore\LogFiles\Web存在的 IIS 日志检查。

如果没有生成日志,则表示请求根本不会到达 IIS。 根据 IIS 体系结构,HTTP.sys 侦听来自网络的 HTTP 请求,将请求传递到 IIS 进行处理,然后将已处理的响应返回到客户端浏览器。 默认情况下,IIS 提供 HTTP.sys 作为侦听 HTTP 和 HTTPS 请求的协议侦听器,HTTP.sys 级别的任何错误都会记录在此目录中 - D:\Windows\System32\LogFiles\HTTPERR。 因此,让我们看看可以在 HTTPErr 日志中找到的内容:

#Software: Microsoft HTTP API 2.0
#Version: 1.0
#Date: 2018-08-13 03:12:38
#Fields: date time c-ip c-port s-ip s-port cs-version cs-method cs-uri streamid sc-status s-siteid s-reason s-queuename
2018-08-13 03:25:22 293.217.138.127 12052 10.1.2.5 80 HTTP/1.1 GET / - 503 - N/A -
2018-08-13 03:25:22 293.217.138.127 20463 10.1.2.5 80 HTTP/1.1 GET /favicon.ico - 503 - N/A -

如果看到上述日志,则会从 HTTP.sys 级别引发 HTTP 503,并且客户端请求从该级别本身被拒绝,而不会到达 IIS。 现在,我们将从 IIS 在本地浏览站点,并查看发生的情况 - 你可能会收到错误 - 无法显示此页面。你可能会注意到,IIS 网站具有如下所示的绑定,这意味着若要访问此特定网站,需要通过自定义域名访问 (www.cloudservicelabs.com)

IP 地址 端口 主机标头
10.1.2.5 80 www.cloudservicelabs.com

每个客户端都使用绑定访问网站。 网站的典型绑定采用 IP:Port:HostHeader 的形式。 它是一种机制,告知服务器如何访问此站点。 你想到的下一个问题是,此自定义主机名从何而来。

ServiceDefinition.csdef 是可以配置 Web 角色绑定的位置,下面是可能针对应用程序看到的内容:

<WebRole name="SuperConvertor" vmsize="Standard_D1_v2">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="www.cloudservicelabs.com"/></Bindings>
</Site>
</Sites>

在实际方案中,若要通过自定义主机名访问云服务应用程序,需要为此主机标头配置 DNS,对应于云服务 VIP。 现在,可以从 Binding 元素中删除 hostHeader 属性,并重新部署云服务解决方案来解决此问题。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。