【问题标题】:lifecycle of an azure website天蓝色网站的生命周期
【发布时间】:2013-02-23 12:31:21
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 这不取决于Redmond是否在那里更新SSL

标签: asp.net iis azure web


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 这是对的。它没有自动启动。但是,在预留实例上,即使在空闲 10 个小时左右后,应用程序似乎仍会继续运行。此外,您还提出了一个关于启动新流程的有趣观点。虽然我们无法访问 Azure 网站上的许多 IIS 功能,但是,在保留实例上,如果可以通过调用 process.start 来引发单独的进程,那将会很有趣。
  • 当您移动到预留实例时,许多配额都会被移除。我的印象是空闲时间保持不变(在共享实例上,它是 5 到 20 分钟左右的算法,具体取决于几件事),但如果你看到它保持实时状态,那就太好了。尽管您在该保留实例上运行的站点越多,这种情况可能会发生变化,但不确定。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多