CentOS 7におけるphp-fpmプロセスの数が多すぎることによるサーバメモリの消費が大きいという問題を解決する


前言:
最近、サーバのメモリ使用率はずっと高く、php-fpmプロセスの数が多すぎる可能性があることを確認しました.本論文では,php−fpmプロファイルを最適化するプロセスを記録し,php−fpmに関するいくつかの知識を補足した.
php-fpmとは:
php-fpm FastCGI     ,    php       。

操作環境:
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

再起動すると、メモリ使用率が以前より低下していることがわかります.注意:
  • 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プロセス数.
  • 上記の設定を行った場合、php-fpmの実行方法を動的に設定しました:pm=dynamic
  • php-fpmには、2つの実行方法があります.1つはStatic静的であり、もう1つはDynamic動的である.静的に設定と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で指定した個数の間.
  • php-fpmを使用する静的または動的実行方法をどのように選択するか:動的php-fpm実行方法はphp-fpmが余分なプロセスを解放し、メモリリソースを節約することを可能にする.静的php−fpm実行方式では、php−fpmがプロセスよりも多く解放されることは許されず、php−fpmプロセスの頻繁なオンまたは停止を回避し、サーバの場合によっては応答時間を低減する.