Linux运维知识之解决Linux中PHP-FPM进程过量占用内存
小标 2018-12-21 来源 : 阅读 557 评论 0

摘要:本文主要向大家介绍了Linux运维知识之解决Linux中PHP-FPM进程过量占用内存,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

本文主要向大家介绍了Linux运维知识之解决Linux中PHP-FPM进程过量占用内存,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。


1. 事情经过


其实这个问题困扰了我很长时间。事情经过是这样的:我在写这篇文章前几天,对网站服务器进行了停机维护,其中包括更换操作系统、重新配置网站环境、更换博客程序、使用新模板等许多操作(包括误删数据库并没有)。然后问题就出现了!内存多次跑满(如图)!由于我在服务器商处设置了内存超量报警,导致收到了几十条报警信息。由于我这几天有些事情(因为懒并不是),没有认真打理网站,所以只是确定服务器未被入侵后就重启了之。这一拖就到了今天。但是问题早晚要解决!现在我们来解决这个问题吧。


2. 排查过程


实际上排查还是很简单的,直接使用 linux 自带的命令free -m 然后查看空闲内存确定是内存跑满,然后是使用top命令查看进程情况,并确定 cpu 状态正常。


(这里本应有一张我修复故障前的 top 命令结果图,但是我忘记截图了……)


查询结果可以看见我服务器中PHP-FPM进程占用了一半多的内存,找到原因,果断处理!


补充几条命令,会对你排错有帮助:

查看每个PHP-FPM进程的内存占用:ps -ylC php-fpm –sort:rss

查看消耗内存最多的前 40 个进程:ps auxw|head -1;ps auxw|sort -rn -k4|head -40

查看PHP-FPM的平均内存占用:ps –no-headers -o “rss,cmd” -C php-fpm | awk ‘{ sum+=$1 } END { printf (“%d%s\n”, sum/NR/1024,”M”) }’


3. 处理方法


我们可以通过修改 php 的配置文件来限制PHP-FPM的创建和销毁。


我们找到 /www/server/php/etc/php-fpm.conf (在我服务器中是这个路径) 文件,用 vi 打开,找到 pm.max_children 也就是控制 php-fpm 子进程数量的字段,我修改前这个字段是 50,我将其修改为 25。再找到pm.max_spare_servers 这个字段表示空闲进程数的最大值,这个数应为pm.max_children 的 60%~80%,所以我设置为 17。


注意:如果pm.max_children设置过小可能会导致 502 错误频发,应按照自己服务器业务要求和服务器能力自行设置!


这样我们就修改好了配置文件 :wq 退出 vi,并使用 systemctl restart php-fpm 重启PHP-FPM。


(我基本可以确定,90%用户的php-fpm.conf文件与上图不同,大家自己找对应字段就好


4. 处理结果


我们可以看到重启服务后内存瞬间降低至 26%然后稳定到 50%,所以这个问题算是解决了!


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程