O Apache 2.4 no Windows responde lentamente, trava ao exibir algumas páginas dinâmicas

30

(Eu sei a resposta para esta pergunta. Publicando isso apenas para compartilhar a resposta com a comunidade)

Minha instância local (Windows 7) do Apache 2.4 sofre atrasos ou interrupções ao exibir alguns URLs, dependendo do navegador usado para acessar esses URLs .

Com o Firefox / Chrome, o Apache demora para responder em determinados URLs. A lentidão ocorre cerca de 20% do tempo em qualquer URL. Quando isso ocorre, há um atraso de 5 segundos durante o qual o Firefox exibe o status "Aguardando ...".

Com o Internet Explorer 9, o Apache simplesmente trava e para de atender a qualquer solicitação (com qualquer navegador) até que seja reiniciado.

  • Isso parece ocorrer apenas com solicitações dinâmicas (PHP), mas nem todas. De fato, isso ocorre apenas em um site específico. Outros sites baseados em PHP na mesma máquina funcionam bem.
  • Pode ou não ser significativo que o site problemático seja composto por um grande número de subdomínios (VirtualHosts).
  • Desabilitar o Firewall do Windows e o Comodo Firewall não ajuda.
  • O problema parece mais frequente com páginas "mais ocupadas" (solicitações adicionais para IFRAMES etc.)

Eu tentei várias alterações httpd.conf(como desativar o KeepAlive, EnableMMAP, HostnameLookups), mas nada parece funcionar.

Tomasz P. Szynalski
fonte
1
Depois de obter alguns votos positivos, você terá a reputação de mover a resposta para uma resposta real, o que deve ser feito então. (Se nada mais, as upvotes você irá obter mais reputação então.)
pjmorse
1
Para encontrar esta postagem aqui no Google: A solução abaixo também funciona para este erro: " (OS 64) O nome da rede especificado não está mais disponível.: AH00341: winnt_accept: Falha no AcceptEx assíncrono. ". Em alemão: " (OS 64) O nome de usuário e o endereço da rede não estão disponíveis.: AH00341: winnt_accept: Falha no AcceptEx assíncrono. ".
Uwe Keim

Respostas:

35

Respondida por Thomasz


A solução é adicionar o seguinte ao seu httpd.conf:

AcceptFilter http none
AcceptFilter https none

No Windows, isso tem o efeito de desativar a API AcceptEx () (parte do WinSock), que oferece algumas melhorias de desempenho, mas provavelmente entra em conflito com o Comodo Firewall.

Colocar o Comodo Firewall no modo "Desativado" não ajuda, porque as solicitações provavelmente ainda passam pelo código de rede do Comodo. Eu acho que o Comodo precisaria ser desinstalado completamente para eliminar o problema (embora eu não tenha tentado).

Se você tiver um problema semelhante com o Apache 2.2, use a diretiva Win32DisableAcceptEx.

Referências

Citando http://httpd.apache.org/docs/2.4/mod/core.html :

Os valores padrão no Windows são:

AcceptFilter http data

AcceptFilter https data

O mpm_winnt da janela interpreta o AcceptFilter para alternar a API AcceptEx () e não oferece suporte ao buffer do protocolo http. Existem dois valores que utilizam a API Windows AcceptEx () e reciclam os soquetes de rede entre as conexões. os dados aguardam até que os dados sejam transmitidos conforme documentado acima, e os endereços iniciais do buffer de dados e do ponto de extremidade da rede são todos recuperados da chamada única AcceptEx (). O connect usará a API AcceptEx (), também recuperará os endereços dos pontos de extremidade da rede, mas como nenhum, a opção de conexão não espera pela transmissão inicial de dados.

No Windows, nenhum usa accept () em vez de AcceptEx () e não reciclará soquetes entre as conexões. Isso é útil para adaptadores de rede com suporte de driver quebrado, bem como para alguns provedores de rede virtual, como drivers vpn ou filtros de spam, vírus ou spyware.

Consulte também: http://forums.comodo.com/help-for-comodo-antivirus/conflict-with-apache-t260.0.html;msg31636#msg31636

Eric Fossum
fonte
1
Estou tendo problemas com o IE10, causando o travamento do Apache2.4 (nenhum comodo envolvido) até que o serviço seja reiniciado - e alterando o. Obrigado por postar isso.
Matt lohkamp
1
Isso funcionou para mim também. Também coletei mais algumas referências no meu blog, pois as informações sobre este tópico estão muito dispersas no momento.
Stijn de Witt
3
Trabalhou para mim, Win 7 x64. Gostaria de saber por que nonenão é a configuração padrão no Apache? A maioria das outras características 'inovadoras' são desativados por padrão no Apache: P
rustyx
-1

Estou executando o Apache 2.4.16 em uma caixa do Windows 7 Pro e meu site parou de funcionar cerca de duas semanas atrás. Adicionando isso corrigiu o problema.

ServerRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.4"

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen XX.XX.XX.XX:80
Listen 80
AcceptFilter http none
AcceptFilter https none
pluckyduck
fonte
O voto foi negado porque sua resposta é exatamente a mesma de @Eric Fossum.
precisa saber é