php56-fpm起動します。start自動起動をONにします。設定を変更していなければ、9000番ポートでリクエストを待ち受けるようになります。仲介をするモジュールの設定をします。処理系にリクエストを渡すことが出来るようになります。以下の行がコメントアウトされていないか念のため確認しておきます。modules/mod_proxy_fcgi.so次に、仮想ホストファイルなどを編集してプロキシの設定をします。以下の行を追記するだけです。"proxy:fcgi://127.0.0.1:9000/"</FilesMatch>例として、こんな感じになります。委任する設定が完了しました。動作に必要な環境は整いました。ロードするよう修正します。ディレクティブで動的に選択することが可能になっています。切り替えることが出来ます。等をいじって使用しないモジュールをロードしないようにしておきましょう。選択された状態になっています。動作しているか確認できます。2.0」と表示されるので、変更できていることが分かります。ついて知ったときのメモ、なんとなくの概要。Webサーバの実装モデルの話MPMの話に入る前に、Webサーバの基本的な並行処理のモデルをおさえておきます。Webサーバに接続するクライアントが1人だけであれば、並行処理について考えることは少ないでしょう。多くの場合は同時に複数人のクライアントに対応しなければなりません。いった状況でリクエストを並行処理するためのWebサーバの実装モデルがいくつかありまして、代表的なものを簡単におさらいします。して子プロセスを生成し、その子プロセスに処理を委ねる方式です。メモリ上の親プロセスのアドレス空間を、生成した子プロセスのアドレス空間にコピーします。したがって、その分のコストが発生し、低速と言われています。リクエストが増えれば増えるほど、子プロセスの数とそれに伴うメモリ消費量も増えてしまいます(すべての子プロセスがPHPインタプリタおよび関連ライブラリをロードする)。この方式の利点として、メモリ空間がプロセスごとに独立しているためスクリプト言語などを組み込みやすい、後述のマルチスレッドモデルと違い資源の競合について考慮しなくてよい、などが挙げられます。マルチスレッドモデルクライアントからのリクエストごとにスレッドを生成する方式と、あらかじめスレッドを生成しておくモデルがあります。マルチプロセスモデルとは違い、プロセスではなくスレッドを使用します。際に発生するコピー作業が発生しません(各スレッドはメモリ空間を共有する)。このため、プロセスの生成よりもオーバヘッドが小さいと言われています(メモリ消費量についても同様)。この方式ではメモリ空間を共有するので、コンテキストスイッチの際に発生するメモリ空間の切り替えや、それに伴うキャッシュの削除を省略できるというメリットもあります。メモリ空間を共有することのデメリットとして、スレッド間での資源の競合を考慮したプログラムを書く必要があり、実装が難しくなりコードも複雑なものになりやすい、などが挙げられます。イベント駆動モデル1つのプロセスで複数のリクエストを処理する方式です。スレッドが割り当てることで、それぞれのリクエストに対応していました。イベント駆動モデルでは、リクエスト数に関係なくイベント発生のタイミングで処理を切り替え、1つのプロセスがすべてのリクエストを処理します。プロセスが1つしか無いということは、CPUコアを1つしか活用できないことを意味します。イベント駆動のプロセスをCPUコアそれぞれに起動しておくなどして、この欠点に対応しているみたいです。このモデルは、リクエスト数が増えてもプロセスやスレッドの数が増えることがないので、メモリ消費量やコンテキスト切り替えのオーバヘッドなどのコストを抑える事ができるという利点があります。どのように並行処理するか、という部分の処理をモジュール化したものです。よって選択することができます。そのものにこれらの処理が組み込まれずにモジュール化されていることによって、各々のWebサイト向けにカスタマイズすることが容易になっています。ディレクティブで動的に選択することが可能になりました。代表的なものをまとめます。preforkマルチプロセスモデルです。回数を減らしてパフォーマンス向上を図ります。リクエストごとにプロセスが分かれているため、あるプロセスの障害が他のプロセスに影響を及ぼすことがありません。したがって、安定した通信をすることが可能です。workerマルチスレッドモデルとマルチプロセスモデルのハイブリッドモデルです。制御用の親プロセスがいくつかの子プロセスを作成し、その子プロセスそれぞれがマルチスレッドモデルでリクエストを捌きます。スレッド1つが1つのクライアントの処理を担当します。比べ生成されるプロセスの数を抑えることができるので、資源の節約が可能です。非スレッドセーフなモジュールを利用する際には使用できません。ベースとしたマルチスレッドモデルとマルチプロセスモデルとイベント駆動モデルのハイブリッドモデルです。処理を別のスレッドに割り振って通信を処理することによって、パフォーマンスの向上を図っています。クライアントとのネットワークI/Oのみイベント駆動モデルで実装されています。こちらもスレッドを使用するモデルなので、非スレッドセーフなモジュールを利用する際には使用できません。変更してみたところ、僕の環境では実際にメモリの消費量をかなり低減できました。ついて検討してみてもいいかもしれません。変更方法については以下の記事で書いています。MPMとはなんぞやという話Tweet広告を非表示にするもっと読むコメントを書くプロフィールid:norikone都内で勉強しているフリをしている学生です。気が向いた時に技術系の備忘録などをテキトーに書いていこうと思います。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。