ModSecurity no IIS: Single threaded?

3

Instalei o ModSecurity em um servidor da Web que executa o IIS 8.5 e observei que o tempo de resposta aumentou 15 vezes (0,15 ms / solicitação vs. 2,2 ms / solicitação), mesmo com o SecEngine desativado. Parece que o IIS está sendo executado no modo single-threaded quando o ModSecurity é instalado, porque o processo de trabalho do IIS usa apenas cerca de 15% da CPU com o ModSecurity, mas pode usar até 95% da CPU sem ele.

Estou usando o arquivo conf do CSR instalado pelo ModSecurity. Estou perdendo algumas configurações?

    
por Jim 24.10.2014 / 12:54

1 resposta

2

Eu consegui confirmar suas observações (e as minhas) examinando o código do módulo ModSecurity IIS, no GitHub .

Descobri que o código dentro de CMyHttpModule::OnSendResponse , CMyHttpModule::OnPostEndRequest e CMyHttpModule::OnBeginRequest está agrupado em

EnterCriticalSection(&m_csLock); 
...
LeaveCriticalSection(&m_csLock);

Isso, juntamente com a abordagem singleton de CMyHttpModuleFactory::GetHttpModule() e o fato de que m_csLock é uma variável de CMyHttpModule inicializada apenas em seu construtor (chamada apenas uma vez, porque usa a mesma instância para todas as solicitações) significa que todos os pedidos que chegam em segmentos diferentes são colocados em espera e executados um por um.

Também criei uma marcação para este problema na página do projeto ModSecurity, no GitHub .

    
por 22.04.2016 / 02:24