php-fpm 比 mod_php 占用更多内存

php-fpm 比 mod_php 占用更多内存

我最近将一个 PHP5 应用程序从 Apache 2.4 + mod_php 移至 Apache 2.4 + php-fpm。Apache 配置为通过 Unix 域套接字将所有 *.php 请求代理到 php-fpm。该应用程序要求 php 设置将内存限制增加到 384MB,使用 mod_php 时就是这种情况,并且该设置在 php-fpm 下保留。

切换到 php-fpm 后,一些请求在被 Linux OOM 杀死之前消耗了大约 1GB 的内存。mod_php 中的相同请求没有消耗相同数量的内存,因此没有被杀死。

请注意,我已将 apache 的事件 mpm 调低到只有 2 个进程和 8 个线程。PHP-FPM 的 pm 设置为按需,只有 2 个进程。我可以看到当时只有这个请求正在执行。php-fpm 进程内存继续稳步增加到 1GB,并在返回之前被终止。

我的问题是:1) 为什么 php-fpm 超出了 php.ini 中 384MB 的 memory_limit 设置?2) 如果 apache 使用 unix 域套接字代理到 php-fpm,那么刷新缓冲区是否重要?我认为没有关系。3) 您有什么建议来排除故障并修复此问题吗?

相关内容