【发布时间】:2018-04-12 00:13:35
【问题描述】:
我们遇到了 Azure 应用程序服务问题。我们的 Web 服务 (MVC) 之一在启动时缓存数据库中的数据 (Application_Start) - 这大约需要 3 分钟。在这准备好之前,我们无法处理请求。
这是已知的,因此我们将其设置为“始终开启”,并且旨在仅在必要时在非高峰时间重新启动它。
但是,我们预计下个月服务器的负载会很重,在我们对自动缩放的测试中,我们发现当它添加额外的实例时,这些实例中的每一个都会经历相同的启动延迟 - 但流量是在当前运行的实例和正在预热的新实例之间拆分,例如在这 3 分钟内,一半的请求开始失败。
我们如何配置 Azure 以延迟使用新实例,直到它准备好? (或者我们应该使用 AWS 等代替吗?)。
一些文档指出使用自定义负载均衡器探针,但它主要讨论的是虚拟机,而我们使用的是 PAAS。
【问题讨论】:
-
你能在缓存完成之前做一些类似于 302 重定向到主实例的操作吗?
-
它们都有相同的 url - 额外的实例对最终用户是不可见的
-
当然。我唯一能想到的另一件事是在网站前使用流量管理器,并在端点上线时启用/禁用端点。但这当然会给位于单个应用服务实例后面的多个实例带来问题。然后提出了其他问题——缓存了什么?如果它对于实例不是唯一的,是否可以将其移至 redis 之类的东西中?这样,您就拥有了一个数据缓存实例,并且网站将在大规模事件中立即可用
-
我花了很多时间试图让它与 REDIS 一起工作,但数据不适合键/值匹配(因为我正在做一个模糊匹配 - levenschtein distance over a large number键),所以在 RAM 中直接工作的速度要快得多,这很重要
-
我也尝试过使用 web.config 中的初始化,在加载数据之前我的预热不会返回,但它根本不会触发
标签: azure azure-web-app-service azure-app-service-plans