web-dev-qa-db-ja.com

nginx php-fpm子がコード0で終了しました

誰もが11.0-RELEASE-p8のphp-fpm 7で同様の問題を抱えていたか、それをデバッグする方法を知っていますか?

状況は数分後に始まり、クライアントに半分のページしか表示しません。すべてのページに約62kbのコンテンツが表示され、末尾に��������� 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
4
busy

コード内でexec関数を使用する場合、これはphp-fpmのバグです。それらをブロックして、がそのような問題を起こさないようにすることをお勧めします。

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

バグは過去4年間オープンしています。

4
busy

まず、これは予想される動作です。メッセージは、php-fpm.confのデフォルトであるNOTICEとしてマークされます。

; 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のように変更してください。