azure - API 之间的 Azure 慢速通信
问题描述
在大约 1-5% 的请求中,我们看到 API 之间的通信缓慢(REST API 请求)。这两个 API 均由我们开发并托管在 Azure 上,每个应用服务都在同一区域的 P1v2 层中使用自己的应用服务计划。
我们在应用程序洞察中看到的是,源 API 上的 POST 或 GET 请求可能需要几秒钟才能执行,而目标 API 上的实际执行时间只有几毫秒。
示例(源上的第一行 POST 请求,目标 API 上的第二次执行时间):slow req 1,slow req 2
我们最好的猜测是组件之间的通信丢失了时间差。我们没有对此进行解释,因为有效载荷非常小,并且在大多数情况下,通信时间不到 5 毫秒。
我们驳斥了这可能是由于组件冷启动的可能解释,因为它发生在恒定负载期间并且没有执行水平缩放。
您是否知道可能导致它的原因或如何进行额外分析以发现它?
解决方案
如果您在应用服务计划上运行多个站点,请为您的 Web 应用启用“始终开启”设置。
您可以从 portal.azure.com -> 您网站的刀片 -> 所有设置 -> 应用程序设置 -> 始终开启
有关详细信息,请参见此处: https ://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/
禁用 Always On 后,该站点会在 20 分钟不活动后关闭,以便为可能在同一应用服务计划上运行的任何其他站点释放资源。
它需要收集、处理然后呈现自己的信息量需要一些时间,并且还涉及内部调用,这就是为什么考虑到服务器负载和使用情况,它需要大约 6 到 7 秒,有时甚至更多。要解决该延迟问题,请尝试以下步骤!
推荐阅读
- node.js - 使用 Electron 选择包含程序的特定文件夹,并将文件安装到目录中
- mysql - 为什么 MySQL 字符串不区分大小写?
- sql - 如何以这种方式设置表 A,使表 B 中具有特定值的只有一行可以与表 A 中的行具有外键关系?
- amazon-web-services - 如何使 AWS Lambda 函数打开 URL 地址(在某些浏览器中)并保持 1 分钟?
- javascript - React 异步状态管理
- python - 如何使 wait_for() 函数在 cogs discord.py 中工作?
- python - 如何从整数列表中删除字符串?
- c# - 如何使用断点调试具有多个 dll 的 exe
- amazon-web-services - 如何在 AWS Cognito 中添加裸自定义范围?
- excel - 在另一行被隐藏后,基于单元格值的隐藏行变为未隐藏