FastCGI: “comm com servidor abortado: falha na leitura” apenas para um arquivo específico

FastCGI: “comm com servidor abortado: falha na leitura” apenas para um arquivo específico

Pergunta relacionada: Erro FastCGI e Apache 500 intermitentemente

A solução não funciona para mim.


O problema:

Tenho uma aplicação Laravel 5.1 (estava em produção em outros servidores sem problemas) rodando em um novoServidor Ubuntu 14.04comApache2.4.7e PHP atravésPHP-FPM.

Tudo funciona bem desde que um determinado arquivo não seja invocado no aplicativo:

$compiledPath = __DIR__.'/cache/compiled.php';

if (file_exists($compiledPath)) {
    require $compiledPath; // this causes a "500 Internal Server Error"
}

É um arquivo específico do Laravelcriado automaticamentepelo próprio framework para agilizar um pouco as coisas (para não ser bug no meu código), ele realmente existe e tenho permissões totais de acesso. Isso écerca de 600kBno tamanho. Quando eu removo, tudo funciona bem. Mas quando eu digo ao Laravel para criá-lo novamente e depois acessar qualquer rota do aplicativo, recebo um "500 Internal Server Error" com as seguintes entradas de log:

[fastcgi:error] [pid 14334] (104)Conexão redefinida por peer: [client xxx.xxx.xxx.xxx:41395] FastCGI: comunicação com servidor "/var/www/clients/client1/web1/cgi-bin/ php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" abortado: falha na leitura

[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: cabeçalhos incompletos (0 bytes) recebidos do servidor "/var/www/clients/client1/web1/cgi-bin/php5- fcgi-yyy.yyy.yyy.yyy-80-domain.com"

[fastcgi:error] [pid 14334] (104)Conexão redefinida por peer: [client xxx.xxx.xxx.xxx:41395] FastCGI: comunicação com servidor "/var/www/clients/client1/web1/cgi-bin/ php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" abortado: falha na leitura

[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: cabeçalhos incompletos (0 bytes) recebidos do servidor "/var/www/clients/client1/web1/cgi-bin/php5- fcgi-yyy.yyy.yyy.yyy-80-domain.com"

O que eu tentei:

Tentei a solução na pergunta relacionada mencionada acima, que também representa a maioria das outras sugestões relacionadas a esse problema que pude encontrar: Brinque com as configurações comuns do PHP-FPM para atribuir mais recursos. A resposta aceita também menciona a opção de abandonar completamente o FastCGI, mas não quero ir por aí. Então brinquei com os valores, mas sem sorte.

Não há nenhuma carga no servidor já que sou o único que o utiliza, então duvido muito que seja um problema de recursos disponíveis (é um VPS com 12 GB de RAM).Poderia ter algo a ver com o tamanho do arquivo?É o único arquivo PHP desse tamanho.

Consegui reproduzir o problema em 2 servidores diferentes com a mesma configuração. Isso aconteceunãoocorrer em um servidor Ubuntu 12.04 com Apache 2.2 com FastCGI.

Minha configuração atual:

PHP-FPM:

pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 0

<IfModule mod_fastcgi.c>
    ...
    Alias /php5-fcgi /var/www/....
    FastCgiExternalServer /var/www/.... -idle-timeout 300 -socket /var/lib/php5-fpm/web1.sock -pass-header Authorization
</IfModule>

php.ini

memory_limit = 512M
output_buffering = on

Responder1

Se o PHP estiver falhando apenas em arquivos de origem específicos, o motivo mais provável é que algum acelerador de código PHP (cache de opcode) como Xcache, APC ou eAccelerator tenha problemas com o arquivo. Isso pode ser devido a bugs no acelerador ou no próprio PHP.

Você pode tentar executar seu script por meio da interface de linha de comando do PHP ( php-clicommand), pois o PHP CLI não usa nenhum acelerador.

informação relacionada