FastCGI: «связь с сервером прервана: чтение не удалось» только для одного конкретного файла

FastCGI: «связь с сервером прервана: чтение не удалось» только для одного конкретного файла

Сопутствующий вопрос: Периодически возникают ошибки FastCGI и Apache 500

Это решение мне не подходит.


Проблема:

У меня есть приложение Laravel 5.1 (которое без проблем эксплуатировалось на других серверах), работающее на новой версииUbuntu 14.04 серверсАпач 2.4.7и PHP черезPHP-FPM.

Все работает нормально, пока в приложении не вызывается определенный файл:

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

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

Это файл, специфичный для Laravel.создано автоматическисамой фреймворком, чтобы немного ускорить процесс (чтобы это не было ошибкой в ​​моем коде), он действительно существует, и у меня есть полные права доступа. Этооколо 600кБпо размеру. Когда я удаляю его, все работает нормально. Но когда я говорю Laravel создать его снова, а затем нажимаю на любой маршрут приложения, я получаю "500 Internal Server Error" со следующими записями в журнале:

[fastcgi:error] [pid 14334] (104) Соединение сброшено узлом: [client xxx.xxx.xxx.xxx:41395] FastCGI: связь с сервером "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" прервана: чтение не удалось

[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: получены неполные заголовки (0 байт) от сервера "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com"

[fastcgi:error] [pid 14334] (104) Соединение сброшено узлом: [client xxx.xxx.xxx.xxx:41395] FastCGI: связь с сервером "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com" прервана: чтение не удалось

[fastcgi:error] [pid 14334] [client xxx.xxx.xxx.xxx:41395] FastCGI: получены неполные заголовки (0 байт) от сервера "/var/www/clients/client1/web1/cgi-bin/php5-fcgi-yyy.yyy.yyy.yyy-80-domain.com"

Что я пробовал:

Я попробовал решение в связанном вопросе, упомянутом выше, которое также представляет большинство других предложений относительно этой проблемы, которые я смог найти: Поиграйтесь с общими настройками PHP-FPM, чтобы назначить больше ресурсов. В принятом ответе также упоминается возможность полного отказа от FastCGI, но я не хочу этого делать. Поэтому я поигрался со значениями, но безуспешно.

Нагрузка на сервер отсутствует, поскольку я им пользуюсь один, поэтому я сомневаюсь, что проблема в доступных ресурсах (это VPS с 12 ГБ оперативной памяти).Может ли это быть как-то связано с размером файла?Это единственный PHP-файл такого размера.

Я смог воспроизвести проблему на 2 разных серверах с одинаковой конфигурацией. Это произошлонетпроисходят на сервере Ubuntu 12.04 с Apache 2.2 с FastCGI.

Моя текущая конфигурация:

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

решение1

Если PHP дает сбой только на определенных исходных файлах, наиболее вероятной причиной является то, что какой-либо ускоритель кода PHP (кэш опкода), например Xcache, APC или eAccelerator, имеет проблемы с файлом. Это может быть связано с ошибками в ускорителе или в самом PHP.

Вы можете попробовать запустить свой скрипт через интерфейс командной строки PHP ( php-cliкоманда ), поскольку PHP CLI не использует никаких ускорителей.

Связанный контент