asp.net – 为什么IIS线程这么珍贵与常规CLR线程相比?
我是
reading about AsyncControllers在ASP.NET MVC。
看来,它们存在的唯一原因是,可以保存IIS线程,而长时间运行的工作委托给正常的CLR线程,似乎更便宜。 我在这里有几个问题: >为什么这些IIS线程这么昂贵以证明这个整体架构支持异步控制器? 解决方法
ASP.NET通过使用.NET线程池中的线程来处理请求。线程池维护已经发生线程初始化成本的线程池。因此,这些线程易于重复使用。 .NET线程池也是自调优的。它监视CPU和其他资源利用率,并根据需要添加新线程或修剪线程池大小。您通常应避免手动创建线程以执行工作。相反,使用线程池中的线程。同时,重要的是确保您的应用程序不执行可能快速导致线程池饥饿和拒绝的HTTP请求的冗长的阻止操作。
磁盘I / O,Web服务调用,都被阻塞。有最好通过使用异步调用优化。当你进行异步调用时,asp.net释放你的线程,当调用回调函数时,请求将被分配给另一个线程。 要配置可以设置的线程数: <system.web> <applicationPool maxConcurrentRequestsPerCPU="50" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/> </system.web> 参考:ASP.NET Thread Usage on IIS 7.5,IIS 7.0,and IIS 6.0 这些设置为Microsoft best practices recommend: >将maxconnection设置为12 *#of CPUs。此设置控制您可以从客户端启动的传出HTTP连接的最大数量。在这种情况下,ASP.NET是客户端。将maxconnection设置为12 *#of CPUs。 注意:本节中提供的建议不是规则。他们是一个起点。 您必须对您的应用程序进行基准测试,以找到最适合您的应用程序的应用程序。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC – 将两个存储库返回到View
- ASP.net – 多个上传与jQuery多文件上传插件
- asp.net-mvc-4 – 如何获取mvc中的用户IP地址
- asp.net – 分类失败.返回未最终内容
- ASP.NET MVC3 JQuery Validate Plugin自定义错误放置
- asp.net-mvc – 如何使用activedirectorymembershipprovide
- asp.net – 我应该从UI层返回到业务层?
- asp.net – 数据绑定下拉列表 – 初始值
- asp.net – 在页面中间显示Ajax UpdateProgress
- asp.net-mvc – 使用Orchard CMS构建站点
- asp.net-mvc – PartialViews和验证(回发)
- asp.net-mvc – RequireHttps导致Amazon Elastic
- 写单元测试在ASP.NET Web API中使用User.Identit
- asp.net-web-api – Asp.Net核心WebAPI CORS无效
- telerik – 在向网格添加行时,具有ASP.NET MVC3的
- asp.net-mvc – 使用ASP.NET MVC在Details页面模
- asp.net – System.Web.HttpContext.Current在检
- asp.net – 由于端口小于1024,无法打开包含网站的
- asp.net-web-api – Ajax Post:405方法不允许
- asp.net – 实现实时UI更新的最佳方式,如SO的“新