
Se houver muitos sites pequenos (cerca de 300) em execução com tráfego leve da Web, todos eles deveriam usar o mesmo pool ou seria melhor ter um pool separado para cada um deles?
Suponhamos que os sites sejam confiáveis e que os benefícios de ter um usuário/grupo separado no pool (por exemplo, melhor controle de acesso/permissões) não sejam considerados aqui.
Responder1
Normalmente, prefiro usar um pool por site (mas talvez não aqui, leia tudo).
A principal razão para isso é que permite configurações de php por site. E essas configurações podem variar de acordo com as necessidades do site, mas também para uma melhor separação dos recursos do site. Como por exemplo com diretórios temporários alterados ou 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"
(...)
Você também pode usar ochrootmode para php-fpm, mas isso é mais complexo. E neste caso, com um pool com chroot, talvez fosse mais fácil usar apenas um pool para todos os clientes (portanto, um chroot compartilhado, o que não é muito bom, na verdade). Isso porque coisas como apc são compartilhadas por todos os pools, e isso significa que usando vários pools com chroot, você pode acabar com vários arquivos com os mesmos caminhos em pools diferentes, e o apc armazenaria apenas uma versão em cache do arquivo. Na verdade, no caso do apc+chroot a melhor solução seria executar várias instâncias do php-fpm, com um pool por instância. Não é uma coisa fácil para 300 sites.
Então você pode gerenciar quantos processos php podem ser usados para cada site com as pm.[static/dynamic]
configurações do pool. Observe que para 300 sites pequenosisso pode se tornar um problema, se um grande número desses sites não estiver ativo, uma grande parte da sua memória será usada por processos de pool que não fazem nada.
No seu caso o tráfego é baixo e os sites são leves, então ter mais de 300 (no mínimo) processos de pool rodando na sua caixa, sem fazer nada, é um problema.exagero. E no seu caso específico, acho que usaria um número baixo de pools (talvez você possa agrupar alguns sites, por aplicativos? por versões? por necessidades?), fazendo com que cada pool seja capaz de executar vários sites. Ou talvez apenas um, eu tentaria usar grupos de sites para aplicar algumas restrições open_basedir a eles, mas se todos fossem realmente iguais, você poderia executar apenas com um pool.