Назад | Перейти на главную страницу

Потомок nginx php-fpm завершился с кодом 0

У кого-нибудь была аналогичная проблема с 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.