65.9K
CodeProject 正在变化。 阅读更多。
Home

Azure 免费计划 Webapp“始终在线”技巧

2015 年 6 月 5 日

CPOL

5分钟阅读

viewsIcon

18604

如何让您的 Azure 站点保持“热度”。在使用 Azure 的免费计划网站时,一段时间不活动后 Azure 会将其从内存中卸载。导致下次请求时响应缓慢。我们如何防止这种情况发生?

所以我不允许使用“始终开启”开关?

我正在从 Azure 运行一个简单的网站。这只是一个个人页面,但我仍然对第一次点击的缓慢响应感到恼火。
主要原因显然是没人访问它。所以 Azure 会卸载运行网站的工作进程,并在再次被点击后重新加载它。但是点击量很少或没有点击量并不意味着我不想让它在第一次响应时快速。我需要它真的很快。如果今天我只有一个用户,我需要他。

我通过 MSDN 订阅使用 Azure,所以实际上有一些钱可以花。但我宁愿把钱花在其他事情上,而不是仅仅是我的个人主页。我使用 Azure 的主要原因就是从中学习。所以如果当我有一个新的疯狂想法想尝试时,订阅是空的,我会感到沮丧。

为了解决这个问题,我找到了一种无需编写任何代码就能让我的站点保持“热度”的方法。我必须承认,我还不确定这个解决方案的总体成本是多少。但该解决方案可用于其他目的。所以,如果您有兴趣将您的某个网页或服务变成批处理作业,请继续阅读!

始终开启

Azure 提供了一个开关,可以随时让站点保持“热度”。您可以在站点配置下找到“始终开启”开关。

这是我在我站点上的样子

AlwaysOn

所以我要付费才能拥有一个“热”的网站?难道你们不知道我是荷兰人吗!

那么我们如何防止 Azure 卸载我的站点?

我当然可以升级到基础计划并开始付费。由于我的网站实际上没有多少点击量,所以花费不多。但那样有什么乐趣!

Azure 为我们提供了丰富的工具。其中大多数是免费的或成本非常低。肯定有一个是我可以使用的。

首先,我考虑在网站后面创建一个 WebJob。这需要我编写一个脚本,可以是任何语言,从 node.js 到 powershell 甚至只是一个 C# 程序。想法是定期 ping 网站。但我必须自己做点什么。而我是一个懒惰的家伙……

您 Azure 工具箱中最简单的工具是计划程序(Scheduler)。您可以简单地告诉它每隔 (n) 分钟调用您站点上的任何 URL。

计划程序

manage.azure.com 门户中,您可以在 CDN 和 Automation 下方找到“计划程序”(Scheduler)选项卡。

Scheduler

在这里,我们将创建一个新作业。点击左下角的“新建”(New)。您需要选择“自定义”(Custom)。

create-job

现在您需要选择一个现有的作业集合(Job Collection)或创建一个新的。
您可以为不同的区域创建作业集合。如果您通过 ping 的方式使用它,您的站点将从该特定区域被 ping。
假设我们付费升级了网站,如果我们将站点的多个实例分布在世界各地,这可能会很有用。
我们可能已经打开了始终开启开关。

您也可以将其用于其他目的!我想到的一个方法是使用它来获取一个页面或通用处理程序,它会进行昂贵的数据调用并将结果放入缓存。
这将使您的“缓存更新”通用处理程序成为用户可以按需调用的接口,同时也是一个批处理作业。

另一件可能很有用的事情是获取来自不同区域的页面,以收集关于您的站点与该区域用户的延迟的统计信息。
当您需要决定是否在该区域部署站点副本时,这可能很有用。
您可以使用 Application Insights 来做到这一点。但我想那将是另一个博客的主题。

job-collection

接下来,我们将设置作业本身。我们需要给它一个名称,并选择需要使用的协议和方法。请记住,这对于触发类似将 RSS 源复制到数据库的 Web 服务或其他任何内容也非常有用。

job-name

向导的下一步是计划。这里的设置有点奇怪。您必须选择一个结束日期。默认是下个月。您无法在此处将其设置为永远运行。所以现在暂时忽略它。我们稍后会解决这个问题。

job-schedule

太好了。我们设置了一个每 10 分钟获取一次网站的作业。这将防止它空闲。并且应该使所有后续响应都变得敏捷。

修复计划

在上一步中,我们无法选择让作业永远运行。这实际上并不是作业计划的限制。只是向导的限制。要解决这个问题,我们需要进入作业设置本身。您需要进入作业集合,然后进入作业。

打开正确的作业,然后在“计划”(Schedule)下一直滚动到底部。选择“无结束日期”(no end date)。

schedule-fix

结论

我在这里尝试解决的问题可能有更好的解决方案。但是,如果您的网站(目前)点击量不多,因为您是一家初创公司,但您仍然希望它在首次使用时快速响应,这可能是一个选择。
然而,选择按使用量付费的订阅类型并打开“始终开启”开关,在低流量网站上可能不会花费太多。

我们从中获得的价值是关于计划程序的简单概述。我认为它可以用于简单的批处理类型处理。以及用于实例化缓存结果。
我有一些场景,其中有一个耗时长的操作会缓存其结果。您可以为此创建一个 WebJob,但那样的话,在用户需要时也使其成为可能可能会更难。

此外,如果您不知道如何创建 WebJobs,但知道如何创建 .aspx 页面或通用处理程序。突然之间,您将拥有一个批处理系统,而无需学习任何新知识。

© . All rights reserved.