FastCGI: “comm com o servidor abortado: read failed” somente para um arquivo específico

1

Related question: FastCGI and Apache 500 error intermittently

The solution does not work for me.

O problema:

Eu tenho um aplicativo do Laravel 5.1 (estava em produção em outros servidores sem problemas) rodando em um servidor Ubuntu 14.04 com Apache 2.4.7 e PHP até < strong> PHP-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 Laravel criado automaticamente pelo próprio framework para acelerar um pouco as coisas (por isso não é um bug no meu código), ele realmente existe e eu tenho permissões de acesso total. Tem cerca de 600kB de tamanho. Quando eu removê-lo, tudo funciona bem. Mas quando eu digo ao Laravel para criá-lo novamente e depois clicar em qualquer rota do aplicativo, recebo um "500 Internal Server Error" com as seguintes entradas de log:

[fastcgi:error] [pid 14334] (104)Connection reset by peer: [client xxx.xxx.xxx.xxx:41395] FastCGI: comm with server "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" aborted: read failed

[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: incomplete headers (0 bytes) received from server "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com"

[fastcgi:error] [pid 14334] (104)Connection reset by peer: [client xxx.xxx.xxx.xxx:41395] FastCGI: comm with server "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" aborted: read failed

[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: incomplete headers (0 bytes) received from server "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com"

O que eu tentei:

Eu tentei a solução na questão relacionada mencionada acima, que também representa a maioria das outras sugestões sobre esse problema que eu encontrei: 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 para lá. Então eu brinquei com os valores, mas sem sorte.

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

Eu consegui reproduzir o problema em dois servidores diferentes com a mesma configuração. Ele não ocorreu em um servidor Ubuntu 12.04 com o 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
    
por Quasdunk 15.06.2015 / 11:02

1 resposta

2

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

Você pode tentar executar seu script via interface de linha de comando PHP ( php-cli command), pois o PHP CLI não usa nenhum acelerador.

    
por 15.06.2015 / 16:03