2

我想知道 Azure 网站的生命周期——具体来说:
1. Azure 网站在部署后会立即自动启动(global.asax application_start fire)吗?还是需要外部刺激——http 请求?
2. 如何以及何时回收?
3.回收后是自动启动(全局application_start fire)还是需要外部刺激。

实际上,我需要一个小的后台作业(它还与某些传入的 http 请求交互),我计划在启动时调用它。我知道它可以在工作人员/网络角色中完成,但我喜欢 Azure 网站的即时部署。

PS。我计划为 azure 网站使用预留实例。

谢谢

4

2 回答 2

2

不,Windows Azure 网站在部署后不会自动启动网站。最重要的是,从网站实际创建到您将内容放入其中的时间非常长。我通过创建 Azure 网站并向其部署 MVC 4 应用程序来验证这一点。该应用程序在全局应用程序启动时设置了一个全局变量,其中包含当前日期时间,然后在默认控制器上输出该日期时间和服务器上的当前日期时间。我在部署代码后等待了几分钟,然后调用了该页面。这两次几乎相同,这意味着应用程序在控制器之前启动。如果在我部署时有什么东西启动了应用程序,那么这些时间将被我等待的时间所抵消。

由于它不会在部署后立即启动,因此您需要一些外部刺激才能这样做。

该站点可能会因为空闲 5 分钟到 20 分钟而关闭,具体取决于服务器的繁忙程度,即使在我相信的保留实例上也是如此。如果发生这种情况,下一个请求将通过在服务器上创建一个新的 IIS 进程来重新启动它。发生这种情况时,它不会立即重新启动站点,而是等待请求进入。当然,您可以使用 pingdom 甚至 Windows Azure Mobile Services Scheduler 之类的服务来持续向您的站点发送请求以让它活着。

您提到了一项后台工作,我想知道您是否真的可以通过网站轻松地做到这一点。如果您使用新流程启动它,我不确定这是否会起作用,并且如果您在同一流程中使用新线程执行此操作,那么您仍然会遇到相同的问题,即该站点可能会停止使用它来完成这项工作。

在谈论与某些传入请求交互的后台作业时,我不确定您的目标是什么,所以我不能说太多。如果后台作业将在计时器上运行,那么您可以使用诸如移动服务调度程序之类的东西按计划发送请求,以便您的代码做出反应。

于 2013-02-24T15:40:22.443 回答
0

实际上,在 #1 上,如果您设置 AlwaysOn 设置,该站点可以自动启动,该设置实质上是模拟到您的应用程序的 HTTP 流量,以保持其工作进程正常运行并让您的应用程序预热。您可以在文档页面上阅读有关该设置的更多信息。

于 2015-07-22T17:53:26.183 回答