通过网络搜索我收到很多有关HTTPModule路由默认为单线程还是多线程的冲突帖子。
我正在尝试在本地,UAT和部署环境中快速调试不同的性能,并且想知道我以前没有意识到HTTPModule是否存在紧张关系(鉴于所有环境中的CPU和内存几乎没有) 。
之前的一篇令人不安的帖子建议将所有请求合并,然后按顺序送入模块(每个请求等待上一个请求在开始下一个请求之前完成)。
答案 0 :(得分:1)
据我所知,HttpModule
个实例的线程与HttpHandler
个实例的线程相同。当请求进入时,从线程池分配工作线程并用于执行请求。所以模块是异步运行的。
我发现this文章对于理解asp.net管道中的线程非常有用。
可能影响perf的一个因素是线程池的大小。默认情况下,池包含(我认为)25个工作线程,但这可以在machine.config中更改。您正在调查的环境中是否会出现这种情况?
此外,在IIS5和IIS6中,线程略有不同(参见上面的文章)。这可以解释你所看到的差异吗?
答案 1 :(得分:0)
谢谢你,我相信我可能已经找到了我的瓶颈,并通过以下方式暂时解决了这个问题:
将machine.config更改为:
<section name="processModel" ... allowDefinition="MachineToApplication"/>
重新启动IIS并使用以下命令更新web.config System.Web:
<processModel enable="true" ... maxWorkerThreads="100" maxIoThreads="100" />