|
ここ数日、ウェブ上でNginx 502に関する多くの問題が発生しており、最初は多くの人と同じようにNginxの問題だと思っていました。
ウェブはnginx+phpのアーキテクチャを使っており、ウェブサイトは長い間オンラインになっていないので、最適化は基本的に初期設定に過ぎません。
php-fpm.log確認すると警告が表示されており、それはウェブサイトが停止された時期とほぼ一致していました。 ここから始めます。
最初はドキュメントを探しましたが、翌日も問題が発生しました。 後で設定ファイルを確認して(百度)を翻訳しましたが、英語の基盤は良くありませんでした。 PMモジュールはApacheのモジュールに似ており、静的かつ動的です。
インターネット上で挙げられている多くの調整は主にダイナミクスに基づいていますが、このモジュールの定義方法については説明されていません。 ですので、動的・静的を使う際は設定ファイルをよく確認してください pm = 静的
; pmが「静的」に設定されたときに作成される子プロセスの数と
; PMが「動的」または「オンデマンド」に設定されている場合の子プロセス数が最大です。
; この値は同時にリクエストされる数の上限を設定します
; 奉仕された。 これはmpm_preforkに対するApacheMaxClientsの指令に相当します。
; 元のPHPのPHP_FCGI_CHILDREN環境変数に相当します
; CGI(CGI)だ。 以下のデフォルトはリソースがあまりないサーバーに基づいています。 できません
; PM.*を自分のニーズに合わせて調整するのを忘れてください。
; 注:pmが「static」「dynamic」または「ondemand」に設定されている場合に使用されます。
; 注:この値は必須です。
pm.max_children = 300
; 起動時に作成される子プロセスの数。
; 注:pmが「動的」に設定されている場合にのみ使用されます
; デフォルト値:min_spare_servers + (max_spare_servers - min_spare_servers) / 2
;p m.start_servers = 50
; 望ましい最小数のアイドルサーバープロセス。
; 注:pmが「動的」に設定されている場合にのみ使用されます
; 注意:pmが「ダイナミック」に設定されていると必須です
;p m.min_spare_servers = 20
; 望ましい最大数のアイドルサーバープロセス。
; 注:pmが「動的」に設定されている場合にのみ使用されます
; 注意:pmが「ダイナミック」に設定されていると必須です
;pm.max_spare_servers = 500
; アイドルプロセスが終了する秒数。
; 注:pmが「オンデマンド」に設定されている時のみ使用されます
; デフォルト値:10秒
pm.process_idle_timeout = 10秒;
; 各子プロセスがリスポーンする前に実行すべきリクエスト数。
; これはサードパーティライブラリのメモリリークを回避するのに役立つことがあります。 に対して
; 無限のリクエスト処理で「0」を指定します。 PHP_FCGI_MAX_REQUESTSに相当します。
; デフォルト値:0
pm.max_requests = 10240
赤いフィールドはそれを定義し、サーバーの状況に応じてパラメータを設定する方法です
static pm.max_childrenパラメータを使うと動作しますが、それ以外は動きません。 しかし、その力学は逆です。
2Gメモリpm.max_childrenは約50オンで、実際の状況に応じて調整する必要があります。
もし何か欠点があれば、ぜひご意見をお聞かせください。502の解決策です。
|