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

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

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

注意

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

现象

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

服务不可用

HTTP 错误 503。 服务不可用。

疑难解答步骤

在应用程序中收到 50 倍错误时,这通常意味着服务器端损坏了某些错误。 503 Service Unavailable 服务器错误响应代码指示服务器尚未准备好处理请求。 必须思考为什么突然启动新部署的云服务应用程序会引发此错误。 应用程序是否崩溃? 请求是否到达 IIS 服务器? 服务器负载是否较高?

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

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

如果没有生成日志,则表示请求根本不会访问 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>

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

联系我们寻求帮助

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