php-fpm进程占用CPU过高| php-cgi进程过多

一般情况下,PHP-CGI只在用户访问的时候会占用CPU资源,如果服务器上的PHP-CGI进程占用了非常多的CPU,但是访问流量却非常少。这显然是一个不正常的现象

1.使用  top   找出CPU最高的进程pid

2 ll /proc/PID/fd      //通过PID找到哪个文件操作的进程,进而知道问题所在

3 strace -p PID(进程数) 来跟踪进程

Linux分析进程占用内存最高和占用CPU最高

这里只显示最高的前5个,如果想显示更多的话,可以自己修改:

查看占用内存最高的5个进程

ps aux | sort -k4nr | head -n 5

查看占用cpu最高的5个进程

ps aux | sort -k3nr | head -n 5

查看是否是硬件问题

  方式:top  命令

  主要查看:load average(平均负载),这是一个4核8G内存的服务器

  1分钟平均负载:2.32;

  5分钟平均负载:2.18;

  15分钟平均负载:3.95;

  load average  中3个数的含义,如果是1核cpu,那么不能超过1,4核那么就不能超过4,15分钟可以代表长期,5分钟代表中期,1分钟代表短期,所以先看15分钟

  大神详解load average

  可以说它现在的平均负载接近了它的cpu总核数:4;需要考虑服务器配置升级!


php-fpm.conf 文件一般位于 /www/server/php/70/etc 目录下,注意 70 是php的版本号,需要根据你的php版本变更。


1  ---- 此文章是单个PHP进程使用CPU过高

公司服务器CPU占用过高,报警了,第一反应是登录服务器, top 命令查看当前进程,再输入 P 按cpu排序 :

      

果然看到有多个php-fmp进程占用cpu过高,都达到100%了

于是打算监听一下进程,看看在执行什么操作,使用 strace 命令:     

#监听进程    strace -o /tmp/output.txt -T -tt -F -e trace=all -p 7757
#查看log     tail -f /tmp/output.txt


结果还没看出来什么,cpu占用率已经下来了,那几个进程已经结束了。最后通过 php慢日志 发现了端倪。

php慢日志开启条件,需要在 php-fpm.conf 配置如下:

request_slowlog_timeout = 1      #脚本超时秒数,超过1稍都算慢了
slowlog = /var/log/php.log.slow  #记录慢日志路径

查看近1000条php慢日志:

tail -n 1000 /var/log/php.log.slow
经查找发现了罪魁祸首,是前同事留下的一个大递归操作有问题:      

然后优化代码就可以了。

这种个别php-fpm进程cpu占用过高,基本上是由于程序本身存在问题(如程序无限循环逻辑),优化程序后如果还得不到解决,那就如网上所说需要考虑 php-fpm.conf 里面的一些配置参数了,以及升级服务器。

此文:

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值