php-fpm:start_servers、min_spare_servers、max_spare_serversの理解に役立つ


10

私のサーバー用にphp-fpmのインストールを調整しようとしていますがpm.start_serverspm.min_spare_serversおよびpm.max_spare_servers変数をどうするかを理解するのに問題があります。使っていますpm = dynamic

pm.max_children完全に明確です。各子プロセスは、一度に1つのWebクライアントにサービスを提供します。OK。では、「サーバー」とは何でしょうか。明らかに、私が持っているデフォルトの設定に基づいて、1つのサーバーが複数の子にサービスを提供できます。上限は?子供の数/サーバーの経験則として何を使用すればよいですか?それともまったく関連していますか?一部のフォーラムでは、サーバーの数はCPUコアの2 x#である必要があると誰かが主張していましたが、数がはるかに多い40〜50の推奨構成を見てきました。

PHPのドキュメントも、そこにある多くの「チューニングphp-fpm」記事もまったく役に立ちませんでした。

回答:


13

基本的に、php-fpmがいつでも実行するプロセスの数は、dynamic好きなように設定すると非常に設定可能です。そこに設定するstaticと、常に多くの子プロセスが実行されます。通常は、リソースを節約するために動的に設定します。各子プロセスは1つの要求を処理できます。上限は、phpアプリケーションの負荷とトラフィックの量に依存します。また、それぞれの子のメモリ消費量を平均計算し、あなたがことを確認する必要があります決して子どもの数は、サーバーにインストールされているRAMの量を超えることはないか、スワップ開始、あるいはプロセスを殺す開始のカーネルがあります。

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives:
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
; Note: This value is mandatory.

これらのオプションを設定するときは、次の点を考慮してください。

  • あなたの平均的な要求はどのくらいですか?
  • サイトが取得する同時ビジターの最大数はいくつですか?
  • 各子プロセスは平均でどのくらいのメモリを消費しますか?

3
洞察に感謝します。計算にも役立ちます。これps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'を使用して、各ワーカーのメモリ量を確認します。community.webcore.cloud/tutorials/…
Matt The Ninja
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.