Asp.net mvc 将代码发布到azure的性能影响

Asp.net mvc 将代码发布到azure的性能影响,asp.net-mvc,iis,azure,warm-up,Asp.net Mvc,Iis,Azure,Warm Up,好吧,这是一个相当不科学的问题。先说声对不起。在发布(或升级)代码后,使用windows azure(最好是SQL azure数据库)的任何人都会看到真正随机的性能问题吗 我看到的甚至可能是出版后24小时。这只是一般的延迟。http(s)请求需要非常长的时间才能返回(30秒-1分钟),但同一请求在下次调用时可能会在毫秒内返回 看起来很随意。当我将代码发布到azure时,需要更改哪些内容?负载平衡、DNS缓存、IP地址等。。。所有这些网络层更改的传播是否会导致我的问题 顺便说一句,在几乎所有情况下

好吧,这是一个相当不科学的问题。先说声对不起。在发布(或升级)代码后,使用windows azure(最好是SQL azure数据库)的任何人都会看到真正随机的性能问题吗

我看到的甚至可能是出版后24小时。这只是一般的延迟。http(s)请求需要非常长的时间才能返回(30秒-1分钟),但同一请求在下次调用时可能会在毫秒内返回

看起来很随意。当我将代码发布到azure时,需要更改哪些内容?负载平衡、DNS缓存、IP地址等。。。所有这些网络层更改的传播是否会导致我的问题


顺便说一句,在几乎所有情况下,我都会升级登台环境,然后将VIP交换到生产环境

这主要与您的web角色有关吗?他们正在运行.NET代码吗?(ASP.NET、WCF等)

如果是这样,您可能正在处理IIS应用程序上由于活动而被回收的正常.NET JIT延迟。这种症状听起来就像你在网站上安装了一个ASP.NET应用程序,并且在一段时间内没有点击它。IIS工作程序得到回收,运行时将不会JIT编译您的应用程序,直到收到新的HTTP请求。这就造成了这样一种情况:第一个请求可能需要“永远”的时间,但接下来几分钟内收到的每一个请求都像您从代码中期望的那样“即时”

这不是特定于Azure的,但您可能要处理的IIS环境不同于您在现场运行的环境(关于默认的应用程序池回收设置/回收后的预热设置)

带建议编辑

如果你怀疑这与热身有关,有几种解决方法

最好的方法(除非您另有需要)是管理根本原因,即IIS回收应用程序池。默认情况下,这发生在计时器或请求计数上(不确定Azure中的哪个)。在web.config中发生这种情况时,可以使用
元素进行覆盖。IIS.net具有这些设置的最佳描述。看看:

看看这是否有帮助。我建议在你不被击中的时间段(例如,半夜)进行定时回收

另一个选择是确保流量持续到达站点。用某种轮询软件。“正常运行时间/状态”监视器(如pingdom)非常适合于此。这是一种黑客方法,但我以前在奇怪的场景中使用过。(不推荐)


如果由于特殊的启动要求(听起来好像你没有)而无法正常工作,IIS有一个预热模块,而C#4.0有一些预热类可以提供帮助。同样,还有更多方法可以确保您控制启动期间发生的事情,而不是启动时发生的事情。

这非常有趣。是的,这在ASP.net web角色中。考虑到我们也有多个负载平衡实例,这将解释问题的额外随机性。一个请求可能会立即返回,但下一个请求需要“永远”,然后一切都会恢复正常。如果你不介意的话。。。给我指出处理这件事的正确方向。谢谢