Apache + php 7 + FPM = внезапные сбои системы

У меня есть сервер apache2 + php7, на котором работает простой блог WordPress.

Блог все время работал с apache + mod_php + php7, но недавно во время какого-то пика доступа система зависала, замедлялась и даже ломалась.

Итак, я погуглил, как оптимизировать конфигурации, и во многих учебниках говорилось, что mod_php медленный, и я должен заменить его на php-fpm.

Я сделал, и после изменения сайт стал заметно быстрее, но теперь он случайным образом вылетает и начинает выдавать ошибку http 500...

Нет очевидной причины для новых сбоев, нет пика пользователей или любой другой ситуации, которую я мог заметить.

в журнале ошибок apache полно:

[fastcgi:error] [pid 37179] [client 162.158.167.177:26270] FastCGI: incomplete headers (0 bytes) received from server "/usr/lib/cgi-bin/php-fcgi"
[fastcgi:error] [pid 37176] (104)Connection reset by peer: [client 103.22.200.111:25406] FastCGI: comm with server "/usr/lib/cgi-bin/php-fcgi" aborted: read failed, referer: http://www.fqn.com.br/wordpress/wp-content/plugins/jetpack/css/jetpack.css

таких ошибок действительно тысячи, каждые две секунды одна ошибка, и я не понимаю.

Во-первых, почему apache запрашивает css для fpm?

Во-вторых, что такое "/usr/lib/cgi-bin/php-fcgi"? в этой папке нет файла!! что там должно быть?

Журнал php-fpm совершенно бесполезен, я включил уровень DEBUG loggind, и я получаю следующее:

DEBUG: pid 1664, fpm_pctl_perform_idle_server_maintenance(), line 379: [pool www] currently 1 active children, 2 spare children, 3 running children. Spawning rate 2

каждую секунду одно сообщение о статусе, подобное этому, и через случайные промежутки времени некоторые:

WARNING: pid 1664, fpm_children_bury(), line 252: [pool www] child 38554 exited on signal 11 (SIGSEGV) after 58.797353 seconds from start

но нет трассировки стека или подробного сообщения об ошибке, чтобы помочь мне понять. Мне очень понравилась производительность apache+fpm и откатываться на mod_php не хотелось, но запустить систему 12ч без вылетов в текущей конфигурации невозможно.

ссылка ниже показывает страницу php_info сервера https://jpst.it/11FIP

у кого-нибудь есть идея?


person Rafael Lima    schedule 17.07.2017    source источник


Ответы (1)


Это ошибка программирования .... где-то в движке php, и, похоже, она вызывается программой, устанавливающей неблокирующий ввод или останавливающуюся слишком рано после запуска.

(exec(), shell_exec(), proc_open() which fail)...

Создается впечатление, что PHP-разработчики, мягко говоря, не очень торопятся решать проблему. Известно, что он существует уже ГОДЫ (2012 год — самый старый билет, который я видел)

https://bugs.php.net/bug.php?id=73056

person Nico    schedule 25.11.2017