質問があります。私は128mbvpsを所有しており、1日あたりわずか100ヒットのシンプルなブログを持っています。nginx+php5-fpmをインストールしています。訪問数が少なく、RAMが少ないことを考慮して、1台のサーバーを実行してfpmを静的に設定することにしました。30分以上続くhttpを介してphpスクリプトを実行するなどのランダムなテストを行っているときに、同じマシンでブログを開こうとしたところ、サイトに基本的にアクセスできないことに気付きました。だから私は構成に行き、これを読んだ:
The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes to be created when pm is set to 'dynamic'.
; **This value sets the limit on the number of simultaneous requests that will be
; served**
私が最もショックを受けたのは、PHPの子がhttpサーバーのように同時に何百ものリクエストを処理することを常に想定していたため、私が知らなかったことです。うまくいきましたか?たとえば、2つのphp-fpmの子を起動し、同時に2つの「長いスクリプト」を起動すると、同じphpバックエンドを使用するすべてのサイトにアクセスできなくなります。これはどのように使用できますか?あなたは考えるかもしれません:-duh!phpスクリプト(Webページ)は通常100msで処理されます-...それは間違いありませんが、それぞれ約10秒間実行できるページがあり、5台のサーバーでphp-fpmを使用する訪問者が10人いる場合はどうなりますか?同時に5つのリクエスト?それらはすべてキューに入れられますか、それともタイムアウトが発生しますか?
私は正直に言って、Apacheとmod_phpを使用してWindowsでサイトを実行することに慣れています。これらの制限は、PHPの別の使用方法では適用されないため、これらの問題は発生しませんでした。
これはまた別の問題を提起します。sleep(20)を使用したfile_1.phpとエコーのみを使用したfile_2.phpがある場合、fastcgiマシンでfile_1を実行してからfile_2を実行すると、2番目のファイルは4MBのRAMを使用してphp要求を処理する別のサーバーの作成を要求します。 。apache / mod_phpで同じことを行うと、2番目のファイルは(apacheサーバーで)30KB多くのRAMのみを使用します。これを考慮すると、使用されるRAMが実際に少ない場合、mod_phpが「悪者」を考慮しているのはなぜですか...ここで全体像を見逃していることはわかっています。