ホームページ > バックエンド開発 > PHPチュートリアル > PHP-FPMチューニング:' PM static'を使用最大パフォーマンス用

PHP-FPMチューニング:' PM static'を使用最大パフォーマンス用

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-09 08:25:13
オリジナル
558 人が閲覧しました

PHP-FPM tuning: Using 'pm static' for Max Performance

キーポイント

    適切なメモリサーバーの場合、PHP-FPMの
  • 設定により、スループットが高く、低下が低くなります。この設定により、PHP-FPMプロセスは常に最大容量を維持することができ、新しいプロセスを生成することなくトラフィックピークへの迅速な応答を可能にします。 pm static
  • の使用が不十分なメモリまたはキャッシュストレスの問題を避けるために、慎重な調整が必要です。 pm static CPUのパフォーマンスに影響を与えることなく、サーバーが処理できるPHP-FPMプロセスの最大数に従って設定する必要があります。 pm.max_children 複数のPHP-FPMプールまたは低メモリを備えたサーバーの場合、より適している場合があります。これらの設定は、現在の負荷に基づいてサブプロセスの数を調整することでメモリを保存できますが、トラフィックの変動が発生しているときにオーバーヘッドの問題を引き起こす可能性もあります。
  • PHP-FPM構成の定期的な監視とチューニングは、選択した設定に関係なく最適なパフォーマンスに不可欠です。 PHP-FPMプロセスの平均サイズはサーバーごとに異なり、手動で調整し、サーバーのリソースとトラフィックパターンを明確に理解する必要があります。 pm dynamic pm ondemand
  • この記事の元の原稿は、もともと編集なしでhaydenjames.ioで公開され、著者の許可を得てここで再現されました。

高度なスループット、低レイテンシ、より安定したCPUおよびメモリの使用に最適なPHP-FPMを最適に設定する方法をすばやく学びましょう。デフォルトでは、ほとんどの設定はPM(プロセスマネージャー)PHP-FPMの文字列を動的に設定し、通常、使用可能なメモリ問題が発生した場合はOnDemandをお勧めします。ただし、PHP.NETのドキュメントに基づいてこれら2つの管理オプションを比較し、トラフィックの高い設定のお気に入りのオプションを比較しましょう。

:子プロセスの数は、次の指示に従って動的に設定されます:

  • pm = dynamic pm.max_childrenpm.start_servers:必要に応じてリクエストに応じてプロセスが生成されます。これは、サービスから始まる動的とは異なりますpm.min_spare_serverspm.max_spare_servers
  • pm = ondemand:子どものプロセスの数はpm.start_serversによって固定されています。
  • pm = staticpm.max_children詳細については、グローバルPHP-FPM.CONFディレクティブの完全なリストを参照してください。
PHP-FPMプロセスマネージャー(PM)とCPUFREQレギュレーターの類似性

これは少し話題から外れているように見えるかもしれませんが、PHP-FPM Tweakedトピックに関連付けたいと思います。 OK、ラップトップ、仮想マシン、専用サーバーなど、ある時点でCPU速度が遅いことがあります。 CPU周波数のスケーリングを覚えていますか? (CPUFREQレギュレーター。)これらの設定は、

nixシステムとWindowsシステムの両方で使用でき、

ondemand

パフォーマンス*からCPUレギュレーターの設定を変更することにより、パフォーマンスとシステムの応答性を向上させることができます。今回は、説明を比較して類似点を探しましょう。

  • Governor = ondemand:現在の負荷に応じてCPU周波数を動的にスケーリングします。最高の周波数にジャンプしてから、アイドル時間が増加するにつれて周波数を減らします。
  • Governor = conservative:現在の負荷に応じて周波数を動的にスケーリングします。 OnDemandよりもスケーリング周波数がスムーズです。
  • Governor = performance:常に最大周波数でCPUを実行します。

詳細については、CPUFREQレギュレーターオプションの完全なリストを参照してください。

類似性に気づきましたか?最初にこの比較を使用したいと思います。記事を書く最良の方法を見つけることを目標に、PHP-FPMのpm staticを最初の選択肢として推奨します。

CPUレギュレーターの場合、パフォーマンス設定は、サーバーCPUの制限にほぼ完全に依存するため、パフォーマンス設定はかなり安全なパフォーマンスブーストです。他の要因は、熱、バッテリー寿命(ラップトップ)、CPU周波数を100%に永続的に設定するなどの副作用にすぎません。パフォーマンスに設定すると、実際にCPUの最速のセットアップです。たとえば、Raspberry Piの

設定について読んでください。これにより、RPIボードはパフォーマンスレギュレーターの使用を強制します。また、CPUクロック速度が低いため、パフォーマンスの改善がより顕著になります。 force_turbo

使用

サーバーの最大パフォーマンスを達成pm static

php-fpm

設定は、サーバーのメモリの量に大きく依存します。基本的に、サーバーメモリが不十分な問題に問題がある場合は、pm staticまたはpm ondemandがより良い選択かもしれません。一方、十分なメモリを利用できる場合は、サーバーの最大容量にdynamicを設定することにより、PHPプロセスマネージャー(PM)のオーバーヘッドのほとんどを回避できます。言い換えれば、計算を行う場合、メモリの可用性やキャッシュストレスの問題を作成せずに実行できるPHP-FPMプロセスの最大数に設定する必要があります。また、CPUを圧倒し、多くの処理されていないPHP-FPM操作を引き起こすには高すぎないように設定しないでください。 pm static pm.static

上記の画像では、このサーバーの

pm = staticは、最大約10GBの32GBのインストールメモリを使用しています。自己解釈の強調表示された列に注意してください。このスクリーンショット中に、Googleアナリティクスには約200人の「アクティブユーザー」がありました(最後の60秒)。このレベルでは、PHP-FPMの子どもプロセスの約70%がまだアイドル状態です。これは、PHP-FPMが常に現在のトラフィックに関係なくサーバーリソースの最大容量に設定されることを意味します。アイドルプロセスはオンラインにとどまり、PMが子どものプロセスを生み出してから閉じるのを待つのではなく、トラフィックピークを待ってすぐに応答します。これは、PHPメモリが漏れない生産サーバーであるため、pm.max_children = 100を非常に高く設定しました。現在および将来のPHPスクリプトに110%の信頼性がある場合は、静的でpm.process_idle_timeoutを使用できます。ただし、スクリプトを定期的に再起動することをお勧めします。ポイントはPMのオーバーヘッドを避けることであるため、リクエストの数をより高い数に設定します。たとえば、少なくともpm.max_requestsは、pm.max_requests = 0数とリクエストに応じて、1秒間です。 pm.max_requests = 1000 このスクリーンショットは、「u」(ユーザー)オプションとPHP-FPMユーザーの名前でLinuxpm.max_childrenを使用してフィルタリングされます。表示されるプロセスの数は約50(計算なし)ですが、基本的に

は、ターミナルウィンドウに合ったトップレベルの統計を表示します。この場合、%CPUでソートされています。 100個のPHP-FPMプロセスをすべて表示するには、次のコマンドを使用できます。

topいつtop

を使用して、次のようなエラーに気付いたかもしれません。
<code>top -bn1 | grep php-fpm</code>
ログイン後にコピー

設定を増やす/調整しようとするかもしれませんが、ServerFaultの投稿で説明されている人と同じエラーが表示されます。この場合、ネットワークトラフィックはトラフやピークで大きく変動するため、pm ondemandが低すぎて正しく調整することは困難です。通常のアドバイスは、dynamicを使用することです。しかし、これはさらに悪いことです。トラフィックがほとんどまたはまったくない場合、

はアイドルプロセスを0にシャットダウンし、その後、トラフィックが変動するのと同じくらいのオーバーヘッドの問題になります。もちろん、もちろん、あなたはアイドルタイムアウトは非常に高く設定されています...この場合、

highpm dynamicのみを使用する必要があります。

ただし、複数のPHP-FPMプールがある場合は、PM dynamic、特にondemandはリソースを節約できます。たとえば、複数のcPanelアカウントまたは異なるプールの下で複数のWebサイトをホストします。たとえば、100個以上のCPANELアカウントと約200のドメイン名を持つサーバーがあります。ウェブサイトの3分の2以上がトラフィックをほとんど持っていないため、pm.staticのみをうまく実行できます。これは、すべての子プロセスがシャットダウンされ、多くのサーバーメモリを保存することを意味します。ありがたいことに、CPANELの開発者はこの問題を解決しましたが、今ではデフォルトでdynamicになりました。以前は、デフォルトでondemandを使用しているため、IDLE CPANEL PHP-FPMプール/アカウントでもPHP-FPMが共有サーバー上のオプションになりました。良いトラフィックを受け取った場合、多数のPHP-FPMプール(共有ホスト)を備えたサーバーでホストする可能性は低いです。 ondemand ondemand結論dynamic PHP-FPMでは、大量のトラフィックの提供を開始すると、PHP-FPMの

および

プロセスマネージャーは、固有のオーバーヘッドのためにスループットを制限する可能性があります。システムを理解し、サーバーの最大容量に一致するようにPHP-FPMプロセスを設定します。

または

に基づいた最大使用設定から始めて、メモリとCPUが圧倒されることなく処理できるポイントまで増加します。 ondemandを使用することは、すべてがメモリに存在するため、時間の経過とともにトラフィックピークがCPUをピークにし、サーバーの負荷とCPUの平均がよりスムーズになるためです。 PHP-FPMプロセスの平均サイズはWebサーバーによって異なり、手動で調整する必要があるため、より自動化されたオーバーヘッドプロセスマネージャー(dynamicおよびpm dynamic ondemandpm.max_children更新:A/Bベンチマーク比較チャートを追加しました。 PHP-FPMプロセスがメモリに存在することは、パフォーマンスを改善するのに役立ちますが、メモリの使用量を増やして待機状態に保ちます。設定に最適なポイントを見つけてください。 pm staticdynamic ondemand

PHP-FPM調整に関するFAQ(FAQ) PHP-FPMとは何ですか?サーバーのパフォーマンスにとってなぜそれが重要なのですか?

PHP-FPMまたはFASTCGI Process Managerは、特に忙しいサイトでは、あらゆるサイズのサイトに役立つ追加機能を備えた別のPHP FastCGI実装です。サーバーのパフォーマンスは、ワーカープールを活用することにより、サーバーが同時訪問者からのより多くのリクエストを処理できるため、重要です。これらのプロセスは、PHPファイルを解析し、動的コンテンツを生成し、クライアントに提供する責任があります。これらのプロセスを効果的に管理することにより、PHP-FPMはサーバーのパフォーマンスとスケーラビリティを大幅に向上させることができます。 PHP-FPM tuning: Using 'pm static' for Max Performance

PHP-FPMは私のウェブサイトのパフォーマンスをどのように改善しますか?

PHP-FPMは、PHPプロセスを効果的に管理することにより、Webサイトのパフォーマンスを向上させます。主なプロセスを使用して、PHPスクリプトを処理する複数の子プロセスを制御します。これにより、アイドルプロセスを終了し、必要に応じて新しいプロセスを生成できるため、サーバーリソースを効率的に使用できます。さらに、PHP-FPMはOpCodeキャッシュをサポートします。これは、共有メモリにプリコンパイルされたスクリプトバイトコードを保存することでPHPの実行を大幅に高速化でき、PHPがすべてのリクエストでスクリプトをロードして解析する必要性を排除できます。

php-fpmのpm static構成とは何ですか?パフォーマンスにどのように影響しますか?

pm staticphp-fpmでは、

構成により、子プロセスの数を固定数に設定します。これは、現在のサーバーの負荷に関係なく、着信要求を提供する準備ができている特定の数のプロセスが常にあることを意味します。これは、新しいプロセスを生成する必要がないため、高負荷の下でより良いパフォーマンスにつながる可能性があります。ただし、これらのプロセスが必要でない場合でも、常に実行されているため、メモリ使用量が増える可能性もあります。

最大のパフォーマンスのためにPHP-FPMを調整する方法は?

pm最大のパフォーマンスのためにPHP-FPMの調整には、複数の構成設定を調整することが含まれます。これらの設定には、使用するプロセスマネージャーを決定するpm.max_children設定と、子プロセスの最大数を設定するpm.start_servers設定が含まれます。その他の重要な設定には、開始されたサーバーの数、アイドルサーバーの最小数、およびサーバーの最大数をそれぞれ制御するpm.min_spare_serverspm.max_spare_servers

が含まれます。サーバーのリソースとトラフィックパターンに一致するようにこれらの設定を調整すると、パフォーマンスが大幅に向上する可能性があります。

PHP-FPMの一般的な問題は何ですか?どうすればトラブルシューティングできますか?

pm.max_childrenPHP-FPMの一般的な問題には、CPUの使用量が多い、応答時間の遅い、および子プロセスの最大数に到達することに関連するエラーが含まれます。これらの問題は、多くの場合、PHP-FPM構成の設定を調整して、

設定の追加や別のプロセスマネージャーへの切り替えなど、解決できます。さらに、監視ツールを使用して、ボトルネックとパフォーマンスの問題を特定できます。

PHP-FPMは他のPHPハンドラーとどのように比較されますか?

PHP-FPMは、一般に、他のPHPハンドラーよりも効率的で柔軟性があると考えられています。さまざまなプロセスマネージャーをサポートし、サーバーのリソースとトラフィックパターンに従って調整できます。さらに、PHP-FPMはOpCodeキャッシングをサポートし、多数の同時リクエストを処理でき、忙しいサイトに最適です。

WebサーバーでPHP-FPMを使用できますか?

はい、PHP-FPMは、FASTCGIプロトコルをサポートするWebサーバーで使用できます。これには、Apache、Nginx、LightTPDなどの人気のあるWebサーバーが含まれます。

OpCodeキャッシングとは何ですか?また、PHPパフォーマンスをどのように改善しますか?

OpCode Cachingは、共有メモリにプリコンパイルされたスクリプトバイトコードを保存することにより、PHPパフォーマンスを改善するテクノロジーです。これにより、PHPがすべてのリクエストでスクリプトをロードおよび解析する必要性がなくなり、実行時間が短縮されます。

php-fpmのパフォーマンスを監視する方法は?

PHP-FPMのパフォーマンスを監視するために、いくつかのツールが利用できます。これらのツールには、PHP-FPMステータスページ(ワーカープロセスの現在の状態に関する情報を提供します)と、toppsなどのさまざまなコマンドラインツールが含まれます。さらに、より詳細なメトリックとアラートを提供するサードパーティの監視ソリューションがいくつかあります。

PHP-FPMを使用するためのベストプラクティスは何ですか?

PHP-FPMを使用したベストプラクティスには、サーバーのリソースとトラフィックモードを一致させるプロセスマネージャーの設定と、問題を特定して解決するためのパフォーマンスを定期的に監視することが含まれます。さらに、PHP-FPMとWebサーバーソフトウェアを最新の状態に保ち、最新のパフォーマンスの改善とセキュリティの修正を活用してください。

以上がPHP-FPMチューニング:&#x27; PM static&#x27;を使用最大パフォーマンス用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート