!
也想出现在这里? 联系我们
广告位
当前位置:首页>教程分享>服务器教程>防止PHP-FPM在Linux服务器中占用过多内存?

防止PHP-FPM在Linux服务器中占用过多内存?

如果你已经部署了一个LEMP(Linux、NGINX、MySQL/MariaDB和PHP)堆栈,那么你可能在NGINX中使用FastCGI代理(作为HTTP服务器)来处理PHP。PHP-FPM(FastCGI Process Manager的缩写)是一个被广泛使用的高性能的PHP FastCGI替代实现。

以下是在Linux服务器中设置LEMP Stack的有用指南。

最近,我们公司的一台LEMP网站服务器上的所有PHP网站都变得很慢,并且最终在登录服务器时停止响应,我们发现系统内存不足。PHP-FPM消耗了大部分的RAM,如下截图所示(glances - 系统监控工具)。

防止PHP-FPM在Linux服务器中占用过多内存?

在这篇文章中,我们将展示如何防止PHP-FPM在Linux中消耗过多或全部系统内存(RAM)。在本指南的最后,你将学会如何将PHP-FPM的内存消耗减少50%或更多。

减少PHP-FPM的内存使用

在互联网上做了一些研究后,我们发现需要重新配置PHP-FPM进程管理器和它的某些方面,以减少PHP-FPM在池配置文件中的内存消耗。

默认的池是www,其配置文件位于/etc/php-fpm.d/www.conf(在CentOS/RHEL/Fedora上)或/etc/php/7.4/fpm/pool.d/www.conf(在Ubuntu/Debian/Mint上)。

$ sudo vim /etc/php-fpm.d/www.conf [在CentOS/RHEL/Fedora上] 。

$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf [在Ubuntu/Debian/Mint上] 。

找到以下指令,并根据你的用例设置它们的值。对于被注释出来的指令,你需要取消注释。

pm = ondemand

pm.max_children = 80

pm.process_idle_timeout = 10s

pm.max_requests = 200

我们来简单解释一下上述指令及其值。pm指令决定了进程管理器如何控制子进程的数量。默认的方法是动态的,也就是说子进程(子进程)的数量是根据其他一些指令动态设置的,包括pm.max_children,它定义了同一时间可以存活的子进程的最大数量。

理想的进程管理器是按需其中在启动时没有创建子进程,即在启动时不创建子进程,而是按需生成。仅当新请求将基于pm.max_children和pm.process_idle_timeout连接时定义了子进程,子进程定义了秒数,在此秒数之后,空闲进程将被杀死。

最后,我们需要设置pm.max_requests参数,它定义了每个子进程在重新孵化之前应该执行的请求数。请注意,此参数也可以用作第三方库中内存泄漏的解决方法。

给TA打赏
共{{data.count}}人
人已打赏
服务器教程

修复Nginx服务器413错误上传文件过大限制问题

2021-4-17 17:36:54

服务器教程

在Linux服务器中查看或隐藏文件?

2021-4-17 17:36:57

声明 本站上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。无意侵害您的权益,请发送邮件至 [email protected] 或点击右侧 私信:吉吉国王 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
OneEase