
軽い Web トラフィックで実行されている小さな Web サイトが多数 (約 300 個) ある場合、それらすべてで同じプールを使用する必要がありますか、それとも Web サイトごとに個別のプールを用意したほうがよいでしょうか。
ここでは、Web サイトが信頼されており、プールに別のユーザー/グループを持つことの利点 (アクセス/権限のより適切な制御など) は考慮されていないと仮定します。
答え1
通常、私は Web サイトごとに 1 つのプールを使用することを好みます (ただし、ここではそうではないかもしれません。すべてを読んでください)。
その主な理由は、ウェブサイトごとに PHP 設定が可能だからです。これらの設定はウェブサイトのニーズに応じて変わる可能性がありますが、ウェブサイトのリソースをより適切に分離するためでもあります。たとえば、変更された一時ディレクトリや open_basedir_settings の場合:
(...)
env[TMP] = /path/to/client/var/tmp
env[TMPDIR] = /path/to/client/var/tmp
env[TEMP] = /path/to/client/var/tmp
env[DOCUMENT_ROOT] = /path/to/client/www
php_admin_value[open_basedir] = ".:/path/to/client/www:/path/to/client/var/tmp:/path/to/client/var/log"
php_admin_value[upload_tmp_dir]="/path/to/client/var/tmp"
(...)
また、chrootphp-fpm のモードもありますが、これはより複雑です。この場合、chroot されたプールでは、すべてのクライアントに対して 1 つのプールだけを使用する方が簡単かもしれません (つまり、共有 chroot ですが、これは実際にはあまり良くありません)。これは、apc のようなものがすべてのプールで共有されるためです。つまり、複数の chroot されたプールを使用すると、異なるプールに同じパスを持つ複数のファイルが存在することになり、apc はファイルの 1 つのキャッシュ バージョンのみを保存します。実際、apc+chroot の場合、最善の解決策は、インスタンスごとに 1 つのプールを持つ複数の php-fpm インスタンスを実行することです。300 の Web サイトでは簡単なことではありません。
次に、プール設定を使用して、各Webサイトで使用できるPHPプロセスの数を管理できますpm.[static/dynamic]
。300の小さなWebサイトの場合、これは問題になる可能性があるこれらの Web サイトの多くがアクティブでない場合、メモリの大部分は何も実行しないプール プロセスによって使用されます。
あなたの場合、トラフィックは少なく、ウェブサイトは軽いので、300以上のプールのプロセスがボックス上で何もせずに実行されているのは、やり過ぎ. そして、あなたの特定のケースでは、代わりに少数のプールを使用すると思います (アプリケーション別、バージョン別、ニーズ別など、いくつかの Web サイトをグループ化できます)。各プールで複数の Web サイトを実行できます。または、1 つだけかもしれません。Web サイトのグループを使用して、それらに open_basedir 制限を適用しようとしますが、それらがすべて同じである場合は、1 つのプールだけで実行できます。