У кого-нибудь была аналогичная проблема с php-fpm 7 с 11.0-RELEASE-p8 или знает, как ее отлаживать?
Ситуация начинается через несколько минут и клиентам показывают только половину страницы. На всех страницах отображается около 62 КБ контента с окончанием ��������� 4.
Файл журнала php-fpm:
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80582 exited with code 0 after 0.005648 seconds from start
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80584 started
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80583 exited with code 0 after 0.005877 seconds from start
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80585 started
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80581 exited with code 0 after 0.007763 seconds from start
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80586 started
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80585 exited with code 0 after 0.005653 seconds from start
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80587 started
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80586 exited with code 0 after 0.005820 seconds from start
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80588 started
Конфигурация PHP:
$php -v
PHP 7.0.17 (cli) (built: Mar 17 2017 02:07:44) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.17, Copyright (c) 1999-2017, by Zend Technologies
PHP-FPM.conf
pm = dynamic
pm.max_children = 25
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 3
pm.max_requests = 0 ;changing to 500
это ошибка php-fpm при использовании функций exec внутри кода. Хорошая практика - заблокировать их, чтобы не создавать таких проблем.
https://bugs.php.net/bug.php?id=73342
ошибка открыта последние 4 года.
Во-первых, это ожидаемое поведение. Сообщения помечаются как NOTICE, по умолчанию в php-fpm.conf:
; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
;log_level = notice
Процессы завершаются и возрождаются, когда в вашем файле конфигурации php-fpm определена опция pm.max_requests.
Например:
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
pm.max_requests = 500
Если в этом примере он определен как 500, php-fpm перезапускает процесс после обработки 500 запросов. На самом деле вы можете игнорировать эти сообщения, потому что они безвредны и просто информативны.
Если вы не хотите, чтобы эти сообщения регистрировались, просто измените уровень журнала на что-то выше notice
, лайк warning
.