我可以只为一个应用程序使用一个 PHP-FPM 池而没有任何缺点吗?


Can I use only one PHP-FPM pool for one APP without any drawbacks?

一个APP需要有多个PHP-FPM池吗?我有一个带有Digital Ocean,Drupal,NGINX,2个内核,2 Gigas RAM的应用程序。使用 Perusio 的 NGINX 和 DRUPAL 配置,我当前的配置有 3 个池,我不知道拥有多个池是否对性能有好处,或者我是否可以从一个池运行我的 Drupal 应用程序。

为什么我不想只从一个池中运行 PHP-FPM?因为每个池的 PHP-FPM 配置中都有一些参数,必须根据 CPU 内核、RAM 等进行设置......但是,如果有 2 或 3 个游泳池怎么办?我应该将所有内容除以 3 吗?然后这些设置变得混乱。

此外,每个池的日志(访问、错误)都是分离的,我更喜欢在一个位置。我读过,使用不同的池,我们可以控制不同的应用程序,听起来合乎逻辑,但事实并非如此。

我已经在生产中了,这就是我要问的,如果不先自己测试就没有问题。谢谢大家!

池旨在提供对 PHP-FPM 的精细配置和控制;每个正在运行的池可以有不同的行为。出于这个原因,许多人选择每个应用程序有一个 PHP-FPM 池。

如果我理解了你的问题,你正在运行三个池,只有一个Drupal安装。如果是这种情况并且所有三个配置都相同,则可以通过合并到单个池中来简化此操作。

我的建议:

  1. 由于您已经在生产中,因此请观察所有pm设置(尤其是pm = dynamic ),并确保增加设置,例如按比例pm.max_children要删除的池数量(例如,如果pm.max_children = 10我建议将其提高到 30 以适应)。

  2. 如果您的 PHP-FPM 实例正在使用缓存,请确保刷新这些缓存。

  3. 保留配置文件的完整热备份(例如,整个/etc/php-fpm.d),如果你想最大限度地减少停机时间,请自由使用 PHP-FPM 的重新加载功能,而不是重新启动。

  4. 确保将 Nginx 的fastcgi_pass调整为指向正确的套接字/端口。

  5. 最后,密切关注生成的进程数和消耗的内存数。pm中的错误配置很容易使 PHP-FPM 消耗过多的资源。祝你好运!

相关文章: