Azure-如何排查应用程序网关返回 HTTP Code 502 或客户端得到应用程序网关响应慢的问题(一)

问题描述

经过初步排查,应用程序网关本身工作正常,同时也排除了 Azure 平台网络的延迟。出现的现象通常是部分的 URL 响应正常、部分 URL 响应慢或是返回 HTTP Code 502。

问题分析

  1. 通过分析访问日志判断应用访问以及响应情况(有关如何启用以及获取诊断日志请参考:应用程序网关的后端运行状况、诊断日志和指标)。
  2. 对比后端 Web 服务器的访问日志,通过时间戳或是 URL 来查询同一个请求在应用程序网关以及后端 Web 服务器的响应情况。
  3. 如果在应用程序网关以及后端 Web 服务器的访问日志中看到部分 URL 访问中 timetaken 数值相对于请求内容大小异常大(例如请求内容只有几十 K,但是响应时间多达 5 秒以上)说明后端服务器响应慢。
  4. 如果应用程序网关记录了 Http Response Code 502 而后端 Web 服务器的访问日志中记录返回 HTTP Code 200,仔细留意时间戳,发现后端服务器的 Http Response Code 200 响应的时间比应用程序网关记录此 URL 访问的 Http Response Code 502 晚了 1 秒或是更长的时间。

以上分析过程可以判断出,此问题与后端 Web 服务器响应慢有关。
这包含两种可能:

  1. Web 服务器工作异常。

    如果是基于 IIS 的 Web 服务器,可以通过开启 failed request tracing (FRT) 功能来跟踪某个响应慢或异常的请求,具体可以参考另外一篇文章:如何排查应用程序网关返回 HTTP Code 502 或客户端得到应用程序网关响应慢的问题(二)

  2. Web 服务器工作正常,但应用逻辑运算需要时间比较长。

    由于应用程序网关在默认的 HTTP settings 中超时时间为 30 秒,30 秒后,如果后端 Web 服务器没有响应此请求,应用程序网关会认为此请求会话超时,并返回给前端客户端 HTTP Code 502。

HTTP settings 超时时间配置如下图:

解决方法

针对以上问题,可以通过以下两种方式解决:

  1. 适当延长应用程序网关的 HTTP settings 的超时时间(时间越长,对于应用程序网关的消耗越大)以便于应用程序网关超时时间匹配(略大于)后端 Web 服务器的应用正常响应所需的最大响应时间。
  2. 如果不想加大应用程序网关的 HTTP settings 的超时时间,而 Web 应用中配置了 keep-alive 机制,建议不要设为刚好 30 秒,而是大于 30 秒,从而避免了应用程序网关在 30 秒内没有收到 Web 服务器的响应从而 timeout 并返回 HTTP Code 502 给前端客户端。

以上两种情况均为 Web 服务器工作正常的情况,只是应用逻辑运算需要时间比较长。
如上所说也可能是后端 Web 服务器本身工作异常,如果是基于 IIS 的 Web 服务器,可以通过开启 failed request tracing (FRT) 功能来跟踪某个响应慢或异常的请求,具体可以参考另外一篇文章:如何排查应用程序网关返回 HTTP Code 502 或客户端得到应用程序网关响应慢的问题(二)

原文地址:https://www.cnblogs.com/yubing83/p/9103807.html

时间: 2024-11-13 00:54:47

Azure-如何排查应用程序网关返回 HTTP Code 502 或客户端得到应用程序网关响应慢的问题(一)的相关文章

EF:The provider 程序不能返回a ProviderManifest 实例 - (解决方案)

问题原因:首先这个问题主要是出于的平台:我用的是VS2012 ,最先用的是EF6.0 用CODEFIRST创建了数据库,但是在自动生成相关的视图(用EF6关联,然后生成VIEW下的增删改)时候出现了问题.又换成了EF5. 最近用EF再改数据库模型的时候有出现:The provider 程序不能返回a ProviderManifest 实例 有改回了EF6.0. 在网上查了资料,这方面资料并不多.在外国网站还看到让人失望的消息,说这是大毛病. 我的解决方案目前只有一个,要改数据库用EF5,要生成视

微信小程序后台返回大量多余数据的处理

台接口返回一个数组,数组里面N多对象,每个对象里面几十上百条数据,最好玩的是,我只需要每个对象里面的某两个数据.... 类似这种: datas:[   {   id:1000,   name: "帅哥",   title: '...',   b: '...',   d: 0,   f:0,   ....   },   {   id:1001,   name: "美女",   title: '...',   b: '...',   d: 0,   f:0,   ...

搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)

搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating-a-wpf-chat-client-server-application/ 注意:本教程是相当广泛的,如果你是在短请也看到我们的东西 开始和 如何在几分钟内创建一个客户端服务器应用程序教程. 注2:本例中包括,明显延长进一步证明功能,在包中包含的示例 包下载. 在我们开始之前确保您已经安装了Vis

[渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署

这是微软官方SignalR 2.0教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第五篇:MVC程序中实体框架的Code First迁移和部署 原文:Code First Migrations and Deployment with the Entity Framework in an ASP.NET MVC Application 译文版权所有,谢绝全文转载--但您可以在您的网站上添加到该教程的

项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”

项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx” 编译新下载的代码出错 修改包管理器的源为 http://www.nuget.org/api/v2/ .重试后成功 记得打勾

使用VS Code开发ASP.NET Core 应用程序

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 最新教程:http://www.cnblogs.com/linezero/p/VSCodeASPNETCore.html 准备 1.安装VS Code  https://code.visualstudio.com/ 2.安装Node.js ht

程序员应具备的素质(国内的大多程序员生产力不够,所以只能早早转行)

学习编程已经有10个年头了,在这10年里,我做个不少软件项目,有大有小,写过基于单片机的裸奔式的嵌入式软件,写过基于os(linux.rtems.linux)的嵌入式软件,做过windows驱动开发,开发个windows应用软件,这一路走来,发现在国内程序员并不受尊重,程序员往往寿命很短,不到30岁就的转行,大家一致认为程序员是it民工,再来看看国外的程序员40岁都能活跃在编程一线,是大家羡慕的朝阳行业,为什么国内国外程序员会有如此天壤之别呢?说白了国内的大多程序员生产力不够,没有创造出作为一名

.net 禁止远程查看应用程序错误的详细信息,服务器上出现应用程序错误

打开页面时出现以下错误 ? "/"应用程序中的服务器错误. 运行时错误 说明:?服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因).但可以通过在本地服务器计算机上运行的浏览器查看.? 详细信息:?若要使他人能够在远程计算机上查看此特定错误消息的详细信息,请在位于当前 Web 应用程序根目录下的"web.config"配置文件中创建一个 <customErrors> 标记.然后应将此 <cust

微信小程序再添能力:搜一搜增加小程序入口

随着移动互联网的快速发展,流量正悄然的变成大数据,借助"入口+流量"模式,互联网激活了大量的个性化入口,积累了巨量流量,并形成高企的资本市场估值.小程序作为当前最新的应用模式,在微信不断开放入口之后,或将迎来流量的爆发期. 今天,笔者发现,微信又为小程序开放了一个超级入口:微信搜一搜增添小程序入口.用户在微信发现中,通过搜一搜 输入关键词,比如水果,搜索页面便会出现相关小程序推荐,点击更多,可直接进入小程序"水果"的搜索页面,相关小程序都会出现在页面中. 点击微信搜