HttpModule线程化

时间:2010-08-31 10:34:23

标签: asp.net multithreading httpmodule

通过网络搜索我收到很多有关HTTPModule路由默认为单线程还是多线程的冲突帖子。

我正在尝试在本地,UAT和部署环境中快速调试不同的性能,并且想知道我以前没有意识到HTTPModule是否存在紧张关系(鉴于所有环境中的CPU和内存几乎没有) 。

之前的一篇令人不安的帖子建议将所有请求合并,然后按顺序送入模块(每个请求等待上一个请求在开始下一个请求之前完成)。

2 个答案:

答案 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" />