我在运行IIS 8.5的Web服务器上安装了ModSecurity,并且注意到响应时间增加了15倍(0.15 ms / request vs. 2.2 ms / request),即使SecEngine设置为off。 当安装ModSecurity时,似乎IIS运行在单线程模式下,因为IIS工作进程只使用ModSecurity大约15%的CPU,但是如果没有它,可以使用多达95%的CPU。
我使用ModSecurity安装的CSR中的conf文件。 我是否缺less一些configuration?
我已经设法通过在GitHub上查看ModSecurity IIS模块的代码来确认您的意见(和我的意见)。
我发现CMyHttpModule::OnSendResponse , CMyHttpModule::OnPostEndRequest和CMyHttpModule::OnBeginRequest里面的CMyHttpModule::OnBeginRequest被封装在里面
EnterCriticalSection(&m_csLock); ... LeaveCriticalSection(&m_csLock);
结合CMyHttpModuleFactory::GetHttpModule()的单例方法和m_csLock是只在其构造函数中初始化的CMyHttpModulevariables(仅调用一次,因为它对所有请求使用相同的实例)的事实,意味着所有的请求在不同的线程上到达,一个一个地执行。
我也在GitHub的ModSecurity项目页面上创build了这个问题的勾号 。