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

MPM プリフォーク、apache2 プロセスが多すぎますか?

解決策 1:

サーバーが SSH と HTTP に応答しないのに ping が機能するというコメントで、これに対する回答を提供しましたが、どうやらあなたは私を信じていないようです。ほんとだ、本当だ!

MaxClients のサイズにする必要があります / ServerLimit あなたのシステムに。あなたが言及している「最小/最大サーバーの 5 ~ 10 の設定」は基本的に関係ありません。 サーバーは、Apache が保持することを何もせずにぶらぶらしています。

MaxClients を適切に設定するには、httpd の典型的な上限値を見てください。 (または apache2 ) プロセスを作成し、使用可能なメモリをそれで割ります。システムの残りの部分が呼吸できるように、少し下に下げるのが最善です。 4GB の RAM と 185MB のプロセスがあるため、これは ServerLimit を意味します。 値はせいぜい 21 でなければなりません — おそらく 20 か 19 です。

さて、190MB は典型的ではないかもしれません。通常の使用量の別の見積もりに基づいて、ServerLimit をより高く設定できますが、基本的には、スパイクが発生しないことに賭けています。その場合、システムのメモリが不足します。

ワーカーごとのメモリ使用量を制限する方法を見つけることができれば、それは成功です。これは PHP Ate My RAM のケースに違いありません。下位の memory_limit 内にアプリをコーディングできますか ?それができない場合は、PHP を実行する別のモデルが必要です。それができない場合は、RAM を追加購入する必要があります。

解決策 2:

Apache の prefork MPM はサーバーを自己管理します。常に StartServers で始まります MinSpareServers 未満で実行されることはありません 動き出したら。また、最終的には MaxSpareServers を超えるサーバーを廃止/強制終了します。 それらが十分長くアイドル状態である場合 (このコンテキストでの「十分な時間」が何であるか、またはそれを変更できるかどうか/どのように変更できるかは思い出せません)。

ServerLimit 任意の時点で実行できる apache デーモンの最大数を設定します。これが、状況で何百ものスリープ状態の apache プロセスを持つことができる理由です (それらは、大量の要求を処理するために生成され、十分な時間アイドル状態ではありませんでした)。まだマザープロセスによって強制終了されていません)。

個人的には ServerLimit に対して 1250 はかなり高い値だと思います /MaxClients -- 250 がより妥当な数かもしれません (ただし、リクエストが大量に殺到すると、503/Server Busy エラーが発生することがあります。これが慢性的な問題になる場合は、数を増やすか、サーバーを追加して負荷を処理できます)。 ).

この質問を以前の質問に関連付けます。Re:メモリ不足のクラッシュ、このパラメーターに関する Apache マニュアルのガイダンスに必ず従ってください:

Most important is that MaxClients be big enough to handle as many simultaneous
requests as you expect to receive, but small enough to assure that there is enough
physical RAM for all processes.

…そして私の個人的な公理:It's better to give a client a 503 page than knock the server down . :)

解決策 3:

キープアライブをオフにして、MaxClients を 150 に設定します。260 のプロセスがそのまま残っている理由として最も可能性が高いのは、Apache 構成ファイルで KeepAlive がオンに設定されているため、Apache がブラウザー接続を開いたままにしておくためです。


Linux
  1. CentOS8にApacheWebサーバーをインストールします-それを行うためのステップバイステップのプロセス?

  2. Ubuntu20.04でMPMイベントとPHP-FPMを使用してApacheを設定する方法

  3. MySQLの接続エラーが多すぎます

  1. 開いているファイルが多すぎるとプッシュ/フェッチでgitが失敗するのはなぜですか

  2. システムに Apache がインストールされているかどうかを確認するにはどうすればよいですか?

  3. シンボリック リンクのレベルが多すぎます

  1. Mysqlエラーの解決:開いているファイルが多すぎます

  2. Ubuntu20.04にApacheCassandraをインストールします-ステップバイステップのプロセス?

  3. Ubuntu 18.04にApacheをインストールします-ステップバイステップのプロセス?