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 – 对于布尔查询字符串参数使用“true”或“1”
- asp.net – 我可以在Visual Studio 2008中使用MVC3吗?
- 如何从asp.net中的客户端网络摄像头捕获图像
- asp.net-mvc-3 – Mini Profiler不渲染脚本
- asp.net – 如何使用Log4Net启用IP地址记录
- npm – 如何从asp.net vnext项目中的wwwroot访问node_modul
- asp.net-mvc – MVC不引人注目的范围验证动态值
- asp.net – 会话固定 – 表单身份验证
- asp.net-mvc – 如何在ASP.NET MVC Web API中将URL作为参数
- asp.net-mvc – 单元测试ASP.Net MVC Action结果,调用Serve
- asp.net – VS 2012发布:找不到有效的AspnetMer
- asp.net – 为什么有2个web.config文件
- asp.net-mvc – 为多语言ASP.NET MVC Web应用程序
- asp.net – 如何在Azure网站上禁用SSL v 3.0
- asp.net-mvc-3 – 用于制作直方图的库javascript
- ASP.NET MVC =具有.NET类库的经典ASP.真?
- asp.net-mvc – 在App_Code中的共享@helper中使用
- 如何自定义ASP.NET Web API AuthorizeAttribute的
- asp.net-mvc – 显式指定ASP.NET MVC中控制器返回
- asp.net-mvc – 保持viewdata在RedirectToAction
