ホームページ  >  記事  >  バックエンド開発  >  PHP プロセスの SIGBUS エラー、PHP プロセスの SIGBUS エラー_PHP チュートリアル

PHP プロセスの SIGBUS エラー、PHP プロセスの SIGBUS エラー_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:51:13950ブラウズ

PHP プロセスの SIGBUS エラー、PHP プロセスの SIGBUS エラー

あるサブサイトが PHP で書かれている場合、時々 502 エラーが表示され、ピーク時間帯に発生する頻度が高くなります。ログを確認してください。 php-fpm を調べて、シグナル 7 (SIGBUS) で多数の子が終了したことを見つけます。これはアクセスログの 502 時間と完全に一致し、PHP プロセスの過負荷の可能性が排除され、APC の疑いが排除されます。

php プロセスはシグナルを受信した後に終了するため、分析のためにいくつかのコアダンプを取得してみてください:

まず、コアダンプの保存パスを設定し、十分なスペースがあることに注意してください。コアダンプはますます大きくなる可能性があるためです (たとえば、APC がオンで 1G に設定されている場合、1G になります)。 リーリー

次に、コアダンプを許可するように ulimit を変更します。

リーリー

php-fpmを再起動します。 すぐに、/tmp/ ディレクトリに大量のコアダンプ ファイルが生成されます。それらを圧縮して、分析のためにオフラインに戻します。 必ずコアダンプを閉じてプログラムを再起動してください:

リーリー

通常、コアダンプを分析するには gdb を使用するだけで十分です (バイナリ配布の場合は、最初に対応するデバッグ シンボル パッケージをインストールします)。 リーリー

bt コマンドを実行してバックトレースを確認します (特定の情報を記録するのを忘れました)。いくつかのコアダンプを調べたところ、これらは基本的に lex ステージでハングしていることがわかりました。

PHP ソース コードについては何も調べていません。Google で「php sigbus lex_scan」を検索したところ、基本的に最初の 2 つのリンクから答えが得られました。

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

  • 2010 年の年次報告書のバグは、PHP のバグではないようなので解決されていません。注意深く見ると再発例があり、最終的に誰かがそれを回避する方法を見つけました。

http://zecrazytux.net/troubleshooting/php-sigbus-crash-prestashop

  • この男性は私と同じ分析プロセスを経て、明確な理由と解決策を示しました。
簡単に言うと、lex_scan は PHP ファイルの構文解析を行っているのですが、このとき、含まれている PHP ファイルが書き換えられてしまい、悲劇が起こりました。

確認するために、strace を使用して php プロセスの実行を追跡し、最終的にそれを捕捉しました。 リーリー

出典: http://blog.druggo.org/post/2013/05/02/%E4%B8%80%E4%BE%8Bphp%E8%BF%9B%E7%A8%8B%E7%9A% 84SIGBUS%E6%95%85%E9%9A%9C

http://www.bkjia.com/PHPjc/1131690.html

www.bkjia.com

http://www.bkjia.com/PHPjc/1131690.html技術記事 php プロセスの SIGBUS エラー。nginx にアクセスすると、時々 502 エラーが発生します。php-fpm のログを確認すると、大量のエラーが発生しました。 .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。