彻底解决php-fpm进程不释放内存问题-调整php-fpm.conf和设置定时重启PHP

4.70K 浏览技术资料
0

对于小内存的VPS来说,Wordpress真的是吃内存的大户,而且有一个严重的问题就是PHP进程不释放内存,而当自己手动重启PHP进程后,内存得到释放,VPS的负载变小。

所以彻底解决php-fpm进程不释放内存问题,分成两步:

第一步:调整php-fpm.conf。主要就是减少pm.max_requests数。最大请求数max_requests,即当一个 PHP-CGI 进程处理的请求数累积到 max_requests 个后,自动重启该进程,这样达到了释放内存的目的了。以1GB内存的VPS主机设置为例(如果你设置的数值没有达到释放内存可以继续调低):

pm.max_requests = 500

详情请参考:Linux的php-fpm优化心得-php-fpm进程占用内存大和不释放内存问题

第二步:定时重启PHP进程。这里主要是利用Linux的定时任务,每天定时重启PHP,强制释放占用的内存,实测效果非常好。

0 */3 * * * sudo service php-fpm restart > /var/log/phprestart.txt 2>&1 &

上面的命令是每隔3小时重启一次php-fpm,并把命令运行的日志输出到日志文件中,以方便自己查看。执行记录如下:

at 2020-02-27 15:00:00
then at 2020-02-27 18:00:00
then at 2020-02-27 21:00:00
then at 2020-02-28 00:00:00
then at 2020-02-28 03:00:00

以上适用于Ubuntn,如果你用的是CentOS,可以使用以下命令:

* */4 * * * sudo systemctl restart php-fpm > /var/log/phprestart.txt 2>&1 &

注:“ > ”追加到文件中。其它的用法:

不输出内容
*/5 * * * * /root/XXXX.sh &>/dev/null 2>&1
 将正确和错误日志都输出到 /tmp/load.log
*/1 * * * * /root/XXXX.sh > /tmp/load.log 2>&1 &
 只输出正确日志到 /tmp/load.log
*/1 * * * * /root/XXXX.sh > /tmp/load.log & 等同于 */1 * * * * /root/XXXX.sh 1>/tmp/load.log &
 只输出错误日志到 /tmp/load.log
*/1 * * * * /root/XXXX.sh 2> /tmp/load.log &

关于Linux定时任务,详情查看:Linux Crontab命令定时任务基本语法与操作教程-VPS/服务器自动化

最后,手动重启定时任务生效。如果有问题,可以查看日志。

/etc/init.d/cron  restart

检查定时任务执行记录,还可以使用在线网站:https://crontab.guru/


分享到:
Qi 更改状态以发布 2020年9月10日
添加评论
写下您的答案。

Login

Welcome! Login in to your account

Remember me Lost your password?

Don't have account. Register

Lost Password

Register