ホームページ  >  記事  >  バックエンド開発  >  CentOS7でphp-fpmプロセスが多すぎることによりサーバーのメモリリソースが過剰に消費される問題を解決

CentOS7でphp-fpmプロセスが多すぎることによりサーバーのメモリリソースが過剰に消費される問題を解決

藏色散人
藏色散人転載
2020-01-13 14:03:323126ブラウズ

前書き:

最近サーバーのメモリ使用量が多くなっているのですが、調べた結果、php-fpm プロセスの過剰が関係している可能性があることが判明しました。この記事では、php-fpm 設定ファイルを最適化するプロセスを記録し、php-fpm に関連する知識を追加します。

php-fpm とは:

php-fpm は、php のメモリとプロセスを制御するために使用される FastCGI プロセス マネージャーです。

動作環境:

CentOS 7

問題確認:

まずは総数を確認してください。 php プロセス:

pstree|grep php-fpm

エコー:

|-php-fpm---20*[php-fpm]

エコー情報によると、クエリ中に 20 個の php-fpm プロセスが存在します。

次のコマンドを使用して、最も多くのメモリを消費する上位 50 のプロセスをリストすることもできます:

ps auxw|head -1;ps auxw|sort -rn -k4|head -50

解決プロセス:

構成を変更しましょう以下のファイルを使用して php-fpm を最適化し、メモリ使用量を削減します。

私の php-fpm 設定ファイルは .../server/php/etc/ ディレクトリにあります。このディレクトリに入ります。

最初に元の構成ファイルをバックアップします:

cp php-fpm.conf php-fpm.conf.bak

注:

vim を使用して構成ファイルを開いた後、Esc キーを押し、次に「/」を入力し、次に「xxx」を入力して文字列「xxx」を検索します。

具体的な構成パラメータは次のとおりです:

pm.max_children = 100改为:pm.max_children = 25
pm.start_servers = 20改为pm.start_servers = 5
pm.min_spare_servers = 5改为pm.min_spare_servers = 2
pm.max_spare_servers = 35改为pm.max_spare_servers = 10

サーバーを再起動します:

reboot

再起動後、メモリ使用量が以前よりも低下していることがわかります。

注:

1. php-fpm.conf のパラメータの説明:

pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。

2. 上記の設定を行うときは、 php --fpm の実行モードは動的に設定されています:

pm = dynamic

3.php-fpm には 2 つの実行モードがあります:

1 つは静的、もう 1 つは動的です。 static に設定した場合、pm.max_children パラメータのみが有効になります。動的に設定すると、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers の 3 つのパラメータが有効になります。動的に設定した後、php-fpm が起動すると、pm.start_servers のパラメータ設定に従って対応する数のプロセスが起動され、以降、php-fpm のプロセス数は pm で指定された数の間で維持されます。 .min_spare_servers および pm.max_spare_servers。

4. php-fpm の静的実行モードと動的実行モードの使用を選択する方法:

動的 php-fpm 実行モードを使用すると、php-fpm は冗長プロセスを解放できるため、メモリ リソースが節約されます。 。

静的 php-fpm 実行方法では、php-fpm が複数のプロセスを解放することはできません。これにより、php-fpm プロセスが頻繁に開始または停止されることがなくなり、場合によってはサーバーの応答時間が短縮されます。

PHP 関連の知識の詳細については、PHP チュートリアル をご覧ください。

以上がCentOS7でphp-fpmプロセスが多すぎることによりサーバーのメモリリソースが過剰に消費される問題を解決の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。