GNU/Linux >> Linux の 問題 >  >> Ubuntu

LinuxでPHP-FPMが大量のRAMを消費するのを防ぐ方法

LEMPを展開した場合 ( Linux NGINX MySQL / MariaDB 、および PHP )スタックの場合、おそらく FastCGIを使用しています NGINX内でのプロキシ (HTTPサーバーとして)、PHP処理用。 PHP-FPM FastCGI Process Managerの頭字語 )は、広く使用されている高性能の代替手段である PHP FastCGI 実装。

LEMPスタックの設定に役立つガイドは次のとおりです。 Linuxの場合。

  • Ubuntu20.04でPhpMyAdminを使用してLEMPスタックをインストールする方法
  • CentOS8にLEMPサーバーをインストールする方法
  • Debian10サーバーにLEMPをインストールする方法

最近、すべての PHP LEMPのいずれかのウェブサイト Webサーバーが遅くなり、サーバーへのログイン時に最終的に応答を停止しました。システムのRAMが不足していることがわかりました: PHP-FPM 次のスクリーンショットに示されているように、RAMのほとんどを消費していました(概要–システム監視ツール)。

$ glances

この記事では、 PHP-FPMを防ぐ方法を紹介します。 システムメモリ( RAM )を過剰にまたはすべて消費することから )Linuxの場合。このガイドの最後で、 PHP-FPMを減らす方法を学びます。 50%以上のメモリ消費。

PHP-FPMのメモリ使用量を削減

インターネットで調査したところ、 PHP-FPMを再構成する必要があることがわかりました。 プロセスマネージャーとその特定の側面により、プール構成ファイルでのPHP-FPMのメモリ消費を削減します。

デフォルトのプールはwww その構成ファイルは/etc/php-fpm.d/www.confにあります。 ( CentOS / RHEL / Fedora )または /etc/php/7.4/fpm/pool.d/www.conf Ubuntu / Debian / Mint

$ sudo vim /etc/php-fpm.d/www.conf             [On CentOS/RHEL/Fedora]
$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf    [On Ubuntu/Debian/Mint]

次のディレクティブを見つけて、ユースケースに合わせてそれらの値を設定します。コメントアウトされているディレクティブについては、コメントを解除する必要があります。

pm = ondemand
pm.max_children = 80
pm.process_idle_timeout = 10s
pm.max_requests = 200

上記のディレクティブとその値について簡単に説明しましょう。 午後 ディレクティブは、プロセスマネージャーが子プロセスの数をどのように制御するかを決定します。デフォルトの方法は動的です 、つまり、子(子プロセス)の数は、 pm.max_childrenを含む他のディレクティブに応じて動的に設定されます。 これは、同時に生きることができる子供の最大数を定義します。

最も理想的なプロセスマネージャーは、オンデマンドです。 起動時に子プロセスが作成されないが、オンデマンドで生成されるスキーム。子プロセスは、 pm.max_childrenに基づいて新しいリクエストが接続される場合にのみフォークされます およびpm.process_idle_timeout これは、アイドル状態のプロセスが強制終了されるまでの秒数を定義します。

最後になりましたが、 pm.max_requestsを設定する必要があります 各子プロセスが再生成する前に実行する必要がある要求の数を定義するパラメーター。このパラメータは、サードパーティライブラリのメモリリークの回避策としても使用できることに注意してください。

参照 :PHP-FPMを実行するためのより良い方法。

上記の構成を行った後、 RAMに気づきました サーバーでの使用は問題ありません。このトピックや質問に関連して共有する考えはありますか?以下のフィードバックフォームからご連絡ください。


Ubuntu
  1. Linux – Linuxからブートローダーを実行する方法は?

  2. Linuxコンピューターがスリープ状態になったり、スクリーンセーバーがオンになったりするのをプログラムで防ぐ方法は?

  3. ユーザーがログインできないようにする方法はありますが、Linuxでsuユーザーを許可しますか?

  1. UbuntuとLinuxMintでコンピューターのRAMをクリアする方法

  2. Windows 10がExt4スーパーブロックを毎回破壊するのを防ぐ方法は?

  3. スラッシング(RAMから)時にシステムが応答しなくなるのを防ぐ方法は?

  1. UbuntuLinuxからリモートWindowsデスクトップにアクセスする方法

  2. ログが大きくなりすぎるのを防ぐ方法は?

  3. Linux サービスが自動起動しないようにするにはどうすればよいですか?