我正在开发一个托管在Windows Azure中的asp.net mvc 4应用程序。这个应用程序不会有很多流量,因为人们将间歇性地(每小时一次)使用它。我想尝试使用Windows Azure。
我的应用程序目前已设置为使用免费网站模式。我注意到在30分钟后,该网站需要很长时间(> 5秒)才能加载。在初始加载之后,它的速度很快。然后,如果有人不再使用它30分钟,则需要> 5秒才能再次加载。
然后我尝试将网站模式提升为SHARED实例。我在那里遇到了同样的问题。
然后我尝试将网站模式提升为RESERVED实例。然后问题就消失了。
虽然我想使用Windows Azure,但对于一个很少使用过这一点的网站来说,为RESERVED实例每月支付50美元以上是非常昂贵的。但是,我不能有最初的滞后。这只会推迟我拥有的少数用户。你可以说你得到你付出的代价。与此同时,我很难相信其他人正在经历这个问题并且没有抱怨。必须有一些我想念的东西。
我认为问题必须处理应用程序池重置。但是,我似乎无法解决这个问题。有人熟悉这个问题吗?有没有办法在FREE或SHARED实例上修复它?
谢谢!
答案 0 :(得分:2)
这是基于Windows Azure网站工作方式的预期行为。他们居住的应用程序池是“按需”旋转,然后挂起一段时间。
有关详细信息(以及无耻的插件),您可以查看我的文章:http://www.simple-talk.com/dotnet/.net-framework/windows-azure-websites-%e2%80%93-a-new-hosting-model-for-windows-azure/
总结:
网站托管在运行IIS的计算机场的进程中。如果站点空闲一段时间,则该过程将自动拆除。此外,如果盒子由于盒子上的其他位置而看到很大的压力,则空闲超时可能会下降很多(甚至低至五分钟)。当下一个呼叫进入时,您将看到该过程再次旋转(可能在完全不同的服务器上)。这是因为您处于共享环境中(与Heroku的工作方式类似)。一旦你转移到保留,那么你是该虚拟机上唯一的人,如果你因为你自己的东西而处理嘈杂的邻居问题。
有很多方法可以保持您的网站“正常运行”,例如有一个频繁ping网址的工作;但是,鉴于空闲超时有点流动,它可能无法解决所有情况。您可以查看Sandrino最近发布的有关如何将Azure移动服务用作作业调度程序的帖子:http://fabriccontroller.net/blog/posts/job-scheduling-in-windows-azure/。还有第三方服务可以自动为您执行ping操作。
说实话,网站是快速开发和测试的一个很好的功能,甚至是你所说的相对较低流量的网站。如果您需要高水平的正常运行时间和更好的性能,那么您将需要查看保留,或者如果成本与预期不符合其他选项。
答案 1 :(得分:0)
这不是Azure问题。它是IIS中托管的任何网站的“功能”。应用程序池的默认超时为20分钟。在这里阅读有关应用程序池超时的信息 - http://technet.microsoft.com/en-us/library/cc771956(v=ws.10).aspx - 一种方法是创建一个保持活动页面并每隔10分钟左右ping一次页面。