asp.net mvc中的异步控制器

在asp.net mvc中使用使用异步控制器能够提高web应用程序的吞吐率,即同一时间内能够处理请求的能力。

在web服务器中,net framework 维护了一个线程池来处理asp.net的请求。当一个请求到达时,线程池指派一个线程来处理。如果请求是同步的,而且这个请求耗时比较长,就会阻塞,就要排队,一个个来处理。
假设,线程池里共10个线程,同时来了10个请求,那么第11个请求就会排队等着,前面10请求如果长时间未能结束,那么第11个请求就会超时报错(503 server busy)

IIS的线程池最大线程数是5000,不过默认是1000。IIS在某一时刻能够最大限制的处理5000个同步请求。

在服务器请求中,访问数据库,统计数据,读写文件,后台请求其他网络都是非常耗时的操作。在大批量请求的时候,可以使用异步控制器来出来请求。在异步控制器处理请求时,net framework会再起个独立的进程出来长时间的任务,处理完事再又主线程返回数据。

同步请求在处理长时间任务时,独立占用主线程。异步请求在处理长时间任务时,主线程该干嘛干嘛,不会被占用。

资料来源:https://docs.microsoft.com/en-us/aspnet/mvc/overview/performance/using-asynchronous-methods-in-aspnet-mvc-4

猜你喜欢

转载自www.cnblogs.com/tomatochen/p/12809068.html