web-dev-qa-db-ja.com

PHP-FPMおよび継続的「シグナル11で終了」

Xeon E5504 2ghzと8gb ram、freebsd 8.2-p9 AMD64、nginx 1.2.1PHP 5.3.14、mysql 5.5.25、apc、memcached、およびfreebsdポートを使用してインストールされたその他のパッケージ。 (そのメッセージの最後にあるconfファイル)

私の問題は簡単です。/var/log/messagesに「exited on signal 11」がたくさんあります。php-fpmの子が死ぬと、自分のWebサイトで「502ゲートウェイエラー」が発生します。 1日のその多くのエラー、そのphp-fpm confでは、静的モードで150のphp-fpmの子があり、pm.max_requests = 10000000であるが、私のphp-fpmログで重い構成に強制しました私は子供ごとに見つけました:

[19-Jul-2012 18:58:14.666913] NOTICE: pid 84563, fpm_children_make(), line
421: [pool www] child 84717 started
[19-Jul-2012 18:58:14.666984] DEBUG: pid 84563, fpm_event_loop(), line 409:
event module triggered 1 events
[19-Jul-2012 18:58:17.403217] DEBUG: pid 84563, fpm_event_loop(), line 409:
event module triggered 2 events
[19-Jul-2012 18:58:17.407442] DEBUG: pid 84563, fpm_got_signal(), line 72:
received SIGCHLD
[19-Jul-2012 18:58:17.407552] WARNING: pid 84563, fpm_children_bury(), line
252: [pool www] child 84563 exited on signal 11 (SIGSEGV) after 39.849444
seconds from start

そして/ var/log/messageで同じpid:

Jul 19 18:58:14 web1 kernel: pid 84563 (php-fpm), uid 1001: exited on signal 11

これが構成ファイル(php.iniおよびphp-fpm.conf)の問題ではないことを確認するために、アーカイブで見つけた元のファイルで復元しましたが、spawn-fcgiを使用しようとした以外は何もありませんでしたが、同じトラブル!

gdb/usr/local/sbin/php-fpm」を実行するphp-fpm.coreを生成しようとしたときより、子が「 シグナル11で終了しました "php-fpm main process exit with"exited on signal 5(core dumped) "(実行するとGDBがスローされます!)、ここでログとgdbバックトレースの結果:

最後のリンクでわかるように、それは最後の行です。

#659 0x0000000801534de0 in ?? () from /lib/libc.so.7
#660 0x0000000000000001 in ?? ()
#661 0x00007fffffffec08 in ?? ()
#662 0x000000000000000f in ?? ()
Cannot access memory at address 0x800000000000

何か案は?

ありがとう!

/ var/log/messages:

Jul 24 17:58:41 web1 kernel: pid 3887 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:42 web1 kernel: pid 3998 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:42 web1 kernel: pid 3895 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:42 web1 kernel: pid 3892 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:43 web1 kernel: pid 3889 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:43 web1 kernel: pid 3898 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:44 web1 kernel: pid 3886 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:44 web1 kernel: pid 3999 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:45 web1 kernel: pid 3896 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:45 web1 kernel: pid 4000 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:45 web1 kernel: pid 3893 (php-fpm), uid 1001: exited on signal 11
Jul 24 17:58:55 web1 kernel: pid 3885 (php-fpm), uid 0: exited on signal 5 (core dumped)

php.ini(元のファイルとの違いのみ)

[PHP]
memory_limit = 128M

apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.mmap_file_mask=/tmp/apc/apc.XXXXXX

error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
display_errors = On
display_startup_errors = On
track_errors = On
html_errors = On

upload_max_filesize = 4M

[Date]
date.timezone = Europe/Rome

[browscap]
browscap = /home/serverweb/etc/php/browscap.ini

php-fpm.conf(元のファイルとの違いのみ)

[global]
error_log = /home/serverweb/log/php-fpm/error.log
log_level = debug

emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 10s

process.max = 0

[www]
user = web
group = web

listen = 127.0.0.1:9999
listen.allowed_clients = 127.0.0.1

pm = static
pm.max_children = 16

pm.max_requests = 10000000

slowlog = /home/serverweb/log/php-fpm/$pool.log.slow
5
RedFoxy

PHP 5.3.14には 重大なバグ があり、php-fpmでsegfaultが発生します。 5.3.15と5.4.5で修正されました。

3
VBart

最近のバージョンのPHPでも問題が解決しない場合は、次のコマンドを実行してみてください。

$ dmesg | grep segfault | tail -10
php-fpm[327]: segfault at 834ac30 ip 000000000834ac30 sp 00007ffc112d1b78 error 14 in libnss_nis-2.23.so[7fe02b461000+b000]
php-fpm[329]: segfault at 834ac30 ip 000000000834ac30 sp 00007ffc112d1b78 error 14
php-fpm[331]: segfault at 834ac30 ip 000000000834ac30 sp 00007ffc112d2278 error 14 in libnss_nis-2.23.so[7fe02b461000+b000]

行の最後に、クラッシュが発生しているライブラリを確認できます。

error 14 in libnss_nis-2.23.so

したがって、そのライブラリをアップグレードしてみてください。例として次のコマンドを実行します。

$ locate libnss_nis-2.23.so
/lib/x86_64-linux-gnu/libnss_nis-2.23.so
$ dpkg -S /lib/x86_64-linux-gnu/libnss_nis-2.23.so

次に、影響を受けるライブラリが属しているものに応じて、それをアップグレードしてみます。それでも解決しない場合は、関連するバグを検索または報告してみてください。

ために newrelic-X.so、参照: PHP Agent Segfaults


PHP 5.6以前はサポートされなくなりました。以下を参照してください。 PHPがサポートするバージョン ページ。例PHP 5.6ブランチサポート2017年1月19日までだったので、PHPを最新の安定版ブランチにアップグレードすることをお勧めします。

または、バージョンをアップグレードできない場合、バックトレースのlisを使用してコアダンプを有効にして調査することで、クラッシュの原因の正しい方向を示すことができます。

1
kenorb