有时当我访问我的 windows azure 网站时,初始响应时间很慢。第一个页面加载后,网站速度很快。一些背景:该网站目前并不经常访问。此外,我正在使用 keepalivecontroller 来保持网站运行并且网站以共享模式运行。我想知道:是否在 Windows azure 中从内存中删除了不那么活跃的网站?还是只是windows azure操作级别的后台任务有时会干扰?发生的事情对我来说并不透明,那么 Windows azure 网站是否有一些 sla 的东西?
5 回答
现在有一个可用于“保留”模式的 Windows Azure 网站的新功能,可以让您的网站保持温暖。您现在可以在 Azure 网站的“配置”选项卡下打开“始终在线”。正如这篇博文中所解释的:
当网站上启用新的“始终在线”功能时,“Windows Azure 将定期自动 ping 您的网站,以确保网站始终处于活动状态并处于热/运行状态,”Guthrie 写道。“这对于确保站点始终响应(并且由于缺少外部 HTTP 请求而导致应用程序域或工作进程没有分页)很有用。”</p>
保持网站温暖的最简单方法是使用 Windows Azure 移动服务中的调度程序功能定期调用它。
您只需在调度程序中编写一个脚本,每隔 x 分钟 ping 您的网站。
这是一篇介绍如何做到这一点的帖子:http: //fabriccontroller.net/blog/posts/job-scheduling-in-windows-azure/
Windows Azure 网站仍处于预览阶段,因此该服务目前没有 SLA。
网站在免费或共享模式下确实空闲,这很可能是您所看到的。当站点空闲时,它实际上是从内存中删除的,并且确实运行该站点的 IIS 进程主机被关闭。这就是他们如何获得在同一 VM 上托管 100 个站点的密度。
你可以在 Channel9 网站上找到很多关于为什么会这样的信息,或者,作为一个无耻的插件,这里有一篇文章讨论了这个过程是如何处理的。
现在,您提到您正在使用一个keepalivecontroller,但您到底是什么意思?我使用 pingdom.com 不断地为我的一个网站请求数据,这似乎做得很好。仍然有可能没有请求进入并且满足空闲时间,然后循环站点。即使您始终运行站点,站点站点所在的 VM 也可能需要更新底层操作系统,在这种情况下,Azure 会将站点进程移动到另一个 VM,这也可能导致启动缓慢在下一个请求。
我会开始记录您的应用程序启动,然后查看您的日志以了解这种情况发生的频率。
如果您只需要预热一次(而不是保持温暖)并且主要是试图防止您的客户体验页面冷启动,我相信正确的工具是IIS Application Initialization。在它认为应用程序准备好执行操作之前,您可以使用要点击的 url 列表对其进行配置。
我的网站遭受页面冷启动的困扰,并且在 Azure 网站(甚至在 S3 上)中被严重放大,但由于多层缓存(我们对 Umbraco 的动态节点查询语言的低效使用),它在第一次服务后绝对快速造成大量数据库流失——我们正在伺机清理)。
根据我阅读的内容和我自己的 web.config 尝试,这在 Azure 网站中仍然不可用。我在这里向微软询问过:MS IDEA:应用程序初始化以在应用程序池启动时预热特定页面。请考虑为它投票。
对于每个服务/站点,您需要转到“配置”,然后将“始终开启”切换为开启。还要确保单击“保存”;我的网站花了大约 2 分钟才注意到变化。
为什么这不是默认设置有点令人难以置信,因为我在 HostGator 上的设置运行速度比 Azure 快得多。我猜微软正在考虑是否没有人访问您的网站,如果它有很长的加载时间也没关系。