解决服务器因php-fpm长时间未释放导致内存被耗尽的问题

曾经说过我在阿里云活动期间购买了一台ECS的事情,部署Wordpress之后,发现不到两天内存就被耗尽,只得重启php-fpm,然而问题依旧,终于发现默认配置下没有对闲置超时的设置。

可以通过如下命令查看php-fpm的运行情况

ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | sort -nrk5 | grep www | grep -v grep

修改php-fpm配置

在php-fpm中有三个重要参数对内存的影响很大,即:模式、子进程数和闲置超时时间。默认是按小内存服务器来配置参数的,但是没有启用闲置超时参数,本人的服务器就是这个关键原因导致内存被耗尽。

本人的服务器只有2G内存,大家请根据自己服务器的内存大小自行斟酌,本文只做参考。

vim /etc/php-fpm.d/www.conf

pm = dynamic #默认是dynamic,适合小内存主机,需配置pm.min_spare_servers和pm.max_spare_servers参数
pm.max_children = 50 #子进程数太多的话,很容易导致内存占用太多
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 50
pm.process_idle_timeout = 3600s #不设置进程闲置超时的话,很容易导致内存无法及时回收
pm.max_requests = 1000

修改后重启php-fpm

systemctl restart php-fpm

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

感谢您的支持与帮助

支付宝扫一扫打赏

微信扫一扫打赏