处理php-fpm高CPU占用

由于可能涉及到私密信息,这里就不放图了。

具体现象有:
  • CPU占用高:使用top命令观察到CPU用户态占用特别高,长时间70%以上。
  • php-fpm进程多:使用top命令观察到php-fpm进程特别多。使用wc统计到有160+个进程。
  • 等待线程多:使用top命令观察到等待进程高达8+。
处理思路:
  1. 降低php-fpm进程数:通过调整php-fpm.conf配置文件中pm.max_children字段,重启php-fpm并未见明显降低CPU占用率。
  2. 添加access日志:在php-fpm.conf配置文件添加中access.log = /XXX/access.$pool.logaccess.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%",观察日志,发现有一个接口访问量特别大,并且状态是404。预计就是这里出了问题。
处理结果:

在nginx上将这个api接口丢弃掉(经过讨论,该接口已经处于废弃状态),发现CPU占用恢复正常。

总结:

php-fpm貌似使用cgi技术,fork时会比较消耗资源,后来在nginx上丢弃效率就要高得多

你可能感兴趣的:(处理php-fpm高CPU占用)