php-fpm

作者: HaoDongZ | 来源:发表于2021-03-22 11:11 被阅读0次

    php-fpm cpu 高排查思路

    CPU占用高:使用top命令观察到CPU用户态占用特别高,长时间70%以上。
    php-fpm进程多:使用top命令观察到php-fpm进程特别多。使用wc统计到有160+个进程。
    等待线程多:使用top命令观察到等待进程高达8+。
    降低php-fpm进程数:通过调整php-fpm.conf配置文件中pm.max_children字段,重启php-fpm并未见明显降低CPU占用率,使用pstack跟踪进程栈
    

    解决思路

    php-fpm.conf开启慢日志,通过日志分析
    error_log = /var/log/php/error.log
    access.log = /var/log/php/access.$pool.log
    access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %{system}C%%"
    slowlog = /var/log/php/slow.$pool.log
    request_slowlog_timeout = 3s
    

    解决思路

    修改pm.max_children的数量,根据内存来进行分配,系统开一个进程20-30M。比如系统内存1G,那就将差不多能开30个进程,所以可以设置pm.max_children 为30,以此类推,然后需要重启下php-fpm服务。
    

    设置控制php-fpm进程池进程数量。

    pm.max_children:静态方式下开启的php-fpm进程数量。
    pm.start_servers:动态方式下的起始php-fpm进程数量。
    pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
    pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
    

    开启慢日志

    编辑php-fpm.conf文件找到request_slowlog_timeout = 0这一行,默认值为0,表示不开启slowlog,将其值改为3s,表示跟踪执行时间达到或超过3s的脚本。找到slowlog,它的值表示慢执行日志的路径。
    

    编辑php-fpm.conf配置文件

    php_admin_value[memory_limit] = 128M(我服务器上的配置文件在/etc/php5/fpm/pool.d/www.conf 这个文件是被包含在php-fpm.conf里的) 后边的数字可以随便更改:32M,64M,128M,256M,512M,这个设置可根据你的服务器内存大小和你的需求来写,修改后要加载一下php-fpm服务。
    

    相关文章

      网友评论

          本文标题:php-fpm

          本文链接:https://www.haomeiwen.com/subject/xflzcltx.html