O Apache trava por cinco segundos com o FallbackResource ao acessar '/'

4

Estou executando uma instalação padrão do Apache 2.4.6 (Amazon) com o PHP 5.4.21 usando a seguinte configuração para o meu host virtual:

DirectoryIndex index.php
# ...
FallbackResource /index.php

Meu index.php é o epítome do simples:

<?php echo "Hello world";

Acessar http://<server-name>/ mostra misteriosamente a página inteira somente depois de cinco segundos! Qualquer outra página tem o tempo de resposta esperado (que é rápido).

Esses cinco segundos, como cheguei a descobrir, estão relacionados ao tempo de espera padrão do recurso Keep-Alive ; Nesse caso, os últimos bytes da resposta em partes não são enviados até que o Apache separe a conexão após esse tempo de espera. Btw, isso também destrói completamente qualquer ganho que uma conexão persistente possa lhe dar.

Este é um bug conhecido do Apache ou estou perdendo algo extremamente óbvio aqui?

    
por Jack 04.12.2013 / 03:34

1 resposta

7

2017/04/18 : Isso foi corrigido no Apache 2.4.25: link

De este relatório de bug , percebi que esse problema poderia estar relacionado ao% diretivaDirectoryIndex.

A instalação padrão do Apache vem com a seguinte seção na configuração:

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

Quaisquer diretivas após essa declaração, como a do seu host virtual, não substituirão essa configuração; em vez disso, é adicionado a uma pilha de páginas que serão tentadas quando o índice é solicitado. Esse comportamento pode ser confirmado quando você executar strace httpd -X e verificar as stat() chamadas logo após a solicitação ter sido lida, por exemplo:

stat("/path/to/vhost/index.html", 0x7fff9dc41b90) = -1 ENOENT
stat("/path/to/vhost/index.php", {st_mode=S_IFREG|0664, st_size=130, ...}) = 0

Embora eu não saiba exatamente por quê, qualquer diretiva DirectoryIndex anterior deve ser limpa antes de especificar DirectoryIndex index.php , ou seja, index.php DEVE ser a primeira página que tentou atender à solicitação.

Isso pode ser feito usando a seguinte configuração:

DirectoryIndex disabled
DirectoryIndex index.php
    
por 04.12.2013 / 03:34