这是否适合在ASP.NET MVC中使用异步控制器

时间:2011-06-21 16:47:00

标签: asp.net-mvc-3

我网站中的所有图片均由控制器操作提供。此操作将检查磁盘上是否存在图像,并可以进行一些操作(调整大小等)。

考虑到一个页面可能包含50个左右的图像,导致50个请求,这是否适合使用ASP.NET MVC异步控制器?

1 个答案:

答案 0 :(得分:3)

您应首先阅读measure-the-performace-of-async-controllers

来自文章

  • 异步请求很有用,但如果您需要处理的并发请求多于工作线程,则。否则,同步请求更好,因为它们可以让您编写更简单的代码 (有一个例外:ASP.NET在最小和最大大小限制之间动态调整工作线程池,如果流量突然增加,它可能需要几分钟才能注意到并创建新的工作线程。你的应用程序可能只有少数工作线程的时间,许多请求可能会超时。我在30分钟内逐步调整流量水平的原因是为ASP.NET提供足够的时间来适应。异步请求比同步更好处理突然流量高峰的请求,但实际上这种高峰并不经常发生。)

  • 即使您使用异步请求,您的容量也会受到您依赖的任何外部服务的容量限制。很明显,但是在你测量它之前,你可能没有意识到这些外部服务是如何配置的。

  • 它没有显示在图表上,但如果你有一个请求队列进入ASP.NET,那么队列延迟会影响所有请求 - 而不仅仅是涉及昂贵的I / O.这意味着整个网站对所有用户来说都很慢。在适当的情况下,异步请求可以通过不强迫其他请求排队这么多来避免此站点范围的减速。