13

nginxとphp-fpmを使用したランダムな502ゲートウェイエラーで問題が発生していました。私の場合、さまざまなphp.iniのerror_log設定とerror_reportingレベルが原因で、ランダムな502ゲートウェイエラーが表示されるシナリオを発見しました。

php.iniの設定error_reportingとerror_logを変更することで、502ゲートウェイエラーを非表示にすることができましたが、さらに重要なことに、ログに実際のphpエラーが何であるかを確認して修正することができました。

主な問題は、「error_reportingが通知を表示するように設定されている場合、「error_logging = On」の場合、error_logがサーバーに書き込み可能な有効なパスに設定されていることを確認する必要があることでした。

// !!! 502 Gateway Error (unhappy server)
error_reporting = E_ALL & E_NOTICE
; error_log = php_errors.log (note this is commented)

// Happy Server, no 502 gateway error
error_reporting = E_ALL & E_NOTICE
error_log = /valid/log/path/and/permissions

// Happy Server, no 502 gateway error
error_reporting = E_CORE_ERROR
; error_log = php_errors.log (note this is commented)

実際のエラーはphp通知でした...ただし、ngingxは、プロパティが設定されていないことに関連するphp通知に対して502ゲートウェイエラーをスローしていました。

また、すべてのphp通知で502ゲートウェイエラーがトリガーされていなかったことにも注意してください。

これが誰かの欲求不満を救うことを願っています!

4

4 に答える 4

3

Nginx の 502 ゲートウェイ エラーは、php-fpm に十分なプロセスやタイムアウトがないことが原因です。ログは、問題が何であるかを示すだけで、502 エラーの原因ではありません。

25 台のサーバーで stunnel+haproxy+nginx+php-fpm を使用しています。pfp-fpm のデフォルトは、適度にビジーなサーバーであっても非常に低く設定されています。Apache mod_php の場合とほぼ同じ方法で、fpm 子プロセスを構成します。

私は以下を使用します:

pm.max_children = 250
pm.start_servers = 20
pm.min_spare_servers =10
pm.max_spare_servers = 20
pm.max_requests = 1500

これは2GBのRAMを搭載したサーバーです。502 なしで 1 日あたり 20 ~ 30 GB のトラフィックを処理します

于 2012-07-12T16:50:25.527 に答える
0

fastCGI モードで iis と php を実行している Windows マシンでこれに遭遇したので、単なる nix の問題ではありません。

犯人はphpロギングでもありました。静的ディレクトリに設定する必要はありませんが、適切なアクセス許可を付与すると、スクリプトが存在する同じディレクトリに書き込むことができます (大規模で複雑なサイトがある場合は非常に役立ちます)。

私のサーバーはこのように設定されており、エラーログを公開しないようにルールを追加しました.

要約すると、権限を確認してください!=)

于 2012-06-22T18:23:48.340 に答える
0

PHP警告を無効にすることで解決した同様の問題がありますが、エラーログが使用するバッファのNGINX構成に問題があると思います。エラーは、特定の数の警告メッセージがキューに入れられた後にのみトリガーされ、非常に予測可能な繰り返しのようです。しかし、どの設定が関係しているのかわからないので、壊れている設定を解決できるまで警告をオフにしました.

于 2013-07-08T04:53:47.963 に答える