在网上搜索,我得到了很多关于HTTPModule路由默认是单线程还是多线程的相互矛盾的帖子。
我正在尝试调试本地、UAT和部署环境中快速不同的性能,我想知道HTTPModule是否有一个我以前不知道的夹点(考虑到所有环境中的CPU和内存几乎为零)。
之前一个令人不安的帖子建议将所有请求汇集在一起,然后按顺序提供给模块(每个请求都等待前一个请求完成,然后再开始下一个请求)。
发布于 2010-08-31 18:57:27
据我所知,HttpModule实例的线程化与HttpHandler实例的线程化是相同的。当请求传入时,将从线程池中分配一个工作线程,并使用它来执行请求。所以模块是异步运行的。
我发现在理解asp.net管道中的线程方面,this文章非常有用。
影响性能的一个因素是线程池的大小。默认情况下,该池包含(我认为) 25个工作线程,但这可以在machine.config中更改。在您正在调查的环境中会出现这种情况吗?
此外,线程在IIS5和IIS6中也有细微的不同(参见上面的文章)。这能解释你看到的不同之处吗?
发布于 2010-08-31 21:53:26
谢谢你,我相信我可能已经找到了瓶颈,并通过以下方式暂时完成了工作:
将machine.config更改为:
<section name="processModel" ... allowDefinition="MachineToApplication"/>重新启动IIS并使用以下命令更新web.config System.Web:
<processModel enable="true" ... maxWorkerThreads="100" maxIoThreads="100" />https://stackoverflow.com/questions/3608162
复制相似问题