19

mod_php、cgi、FastCGIなどのさまざまな構成でPHPを実行することについての基本的な考えがあります.

私の調査結果とテストでは、FastCGI の方がわずかに優れていることがわかりました。私は SuEXEC に対する FastCGI のサポートが最も気に入っています。ここで再びベンチマーク ビジネスに参入したくありません。Web をサーフィンすると、1 秒あたりに処理される要求の数に関して、ある方法が別の方法よりも高速であることを証明する人々を見つけることができます。その良い指標ですが、私はさまざまな要因に興味があり、ここに私の質問があります...

  1. PHP を実行する方法として、メモリ消費量が少ないのはどれですか?
  2. また、どのメソッドがほぼ一定のメモリを消費するか。mod_php を使用すると、サーバーのメモリ使用量が数秒ごとに 300MB から 800MB の間で変動します。
  3. しかし、FastCGI を使用すると、サーバーからの最初の応答が非常に遅くなります。FastCGI では、Web ページ リクエストごとに初期遅延があることがわかります。サーバーからの最初の応答が到着すると、画像、css、js などの他のアイテムの読み込みがかなり速くなります。
  4. 両方を混在させて実行しても問題ありませんか? 専用サーバーに5つのサイトがあります。mod_php でいくつか実行し、FastCGI で残りを実行しても問題ありませんか?
  5. mod_php によるメモリの不適切な使用が原因で、サーバーがダウンしていると確信しています。すべてのスクリプトを確認しました。サーバーのメモリ消費量をほぼ一定に保つ方法はありますか?
  6. .htaccess の複雑さはメモリ使用量に大きく影響しますか? はいの場合、それがサーバーのメモリ不足を引き起こす単一の理由になる可能性がありますか?
  7. apache MPM プリフォーク/ワーカー設定はメモリ消費に影響しますか? それらは mod_php と FastCGI モードに等しく影響しますか?
  8. 「top」コマンドを実行すると、apache (httpd) が約 40MB のメモリを消費していることがわかります。httpd が実行されているインスタンスが多数あります。また、それに加えて、FastCGI は同様のサイズのプロセスをフォークします。httpd プロセスの通常のメモリ サイズはどれくらいですか?
  9. 私はすべてのサイトで Wordpress を実行していますが、そのコンテキストではどの方法が適切でしょうか?
  10. FastCGI/SuExec は APC で正常に動作しますか? SuEXEC および FastCGI で動作するように APC を再構成する必要がありますか?

注意してください、私は DIGG やトラフィックの急増から生き残ることにあまり興味がありません。サーバーを安定させ、予測可能にする方法が必要です。

混乱している場合は申し訳ありませんが、本当に混乱しています。私は 512MB の物理 RAM と 400MB のスワップを持っていますが、私のサーバーは狂ったようにメモリが不足しています。平均メモリ要件は約 350MB です。メモリ使用量の急増によって数秒間メモリが使用できなくなり、その数秒のウィンドウで追加のヒットがほとんど受信されない場合、mysql や他のすべてのフェラが正常に実行されている間に apache がクラッシュしました。

みんな助けてください。RAMやハードウェアをさらに購入するつもりはありません。問題が私の構成にあると確信しています。私が傲慢または無知に聞こえる場合は申し訳ありません。

4

2 に答える 2

19

PHP を実行する方法として、メモリ消費量が少ないのはどれですか?

PHP で処理されるリクエストごとに、それらは多かれ少なかれ同じであると想定しています。しかし、mod_php がイメージを提供する apache にもロードされている場合、静的ファイルを提供するためにメモリ使用量が高くなると思います。

また、どのメソッドがほぼ一定のメモリを消費するか。mod_php を使用すると、サーバーのメモリ使用量が数秒ごとに 300MB から 800MB の間で変動します。

両方をかなり一定にすることができます。MaxClients、MinSpareServers、および MaxSpareServers を慎重に設定すると、実行中のプロセスの数をほぼ把握できます。PHP 構成内で memory_limit も設定すると、必要なメモリ量を計算できます。実行中のプロセスの数を決定できるため、fcgi についても同じことができます。

しかし、FastCGI を使用すると、サーバーからの最初の応答が非常に遅くなります。FastCGI では、Web ページ リクエストごとに初期遅延があることがわかります。サーバーからの最初の応答が到着すると、画像、css、js などの他のアイテムの読み込みがかなり速くなります。

これは意味がありません。あなたの場合、なぜそれが起こるのかわかりません。

両方を混在させて実行しても問題ありませんか? 専用サーバーに5つのサイトがあります。mod_php でいくつか実行し、FastCGI で残りを実行しても問題ありませんか?

私は推測しますが、維持するのは悪夢であり、メモリを節約するための設定はおそらく難しいでしょう。私が信じているのはまったく逆です。

mod_php によるメモリの不適切な使用が原因で、サーバーがダウンしていると確信しています。すべてのスクリプトを確認しました。サーバーのメモリ消費量をほぼ一定に保つ方法はありますか?

上で概説したようにメモリとプロセスを構成し、監視を続けます。

.htaccess の複雑さはメモリ使用量に大きく影響しますか? はいの場合、それがサーバーのメモリ不足を引き起こす単一の理由になる可能性がありますか?

私はそうは思わない。ディレクトリごとの .htaccess は動作を遅くする可能性がありますが、Apache に重大なバグがない限り、大量のメモリを消費することはありません。

apache MPM プリフォーク/ワーカー設定はメモリ消費に影響しますか? それらは mod_php と FastCGI モードに等しく影響しますか?

そうかもしれませんが、PHP はほとんどの場合スレッド セーフではないため、worker には近づかないことをお勧めします。

「top」コマンドを実行すると、apache (httpd) が約 40MB のメモリを消費していることがわかります。httpd が実行されているインスタンスが多数あります。また、それに加えて、FastCGI は同様のサイズのプロセスをフォークします。httpd プロセスの通常のメモリ サイズはどれくらいですか?

30MBが最小です。上限はアプリケーションによって異なります (~1GB のケースを見たことがあります)。

私はすべてのサイトで Wordpress を実行していますが、そのコンテキストではどの方法が適切でしょうか?

それはおそらく好みの問題です。最近、Apache から nginx+fastcgi に移行しました。慣れるまで少し時間がかかりますが、うまく機能します。wordpress ではまったく問題ありません (Web サーバーの観点からかなり関与しているスーパーキャッシュでも問題ありません)。

FastCGI/SuExec は APC で正常に動作しますか? SuEXEC および FastCGI で動作するように APC を再構成する必要がありますか?

私は suExec を使用していませんが、fastcgi は APC でうまく機能します。何も設定する必要はありません。

于 2009-12-22T01:32:59.053 に答える
3

mod_phpに切り替えてみましたが、速度について多くの主張があります。静的ファイルを提供するときにmod_phpが余分なメモリを消費することに気付きませんでした。(ルート所有ファイルのセキュリティの問題についてはあまり気にしませんでした)。

CDN のセットアップがなければ、PHP アプリを提供するためにfastcgiを選択できます。それがなければ、fcgiからmod_phpに切り替えると、ページ生成時間が 3895 ミリ秒から 6264 ミリ秒に大幅に遅くなりました (共有ホスティングの管理ページ)。

于 2011-12-15T21:41:49.473 に答える