对于小内存的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,并把命令运行的日志输出到日志文件中,以方便自己查看。执行记录如下:
以上适用于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日