前言:最近服务器内存占用率高。经检查,可能与php-fpm进程数过多有关。这篇文章记录了我优化php-fpm配置文件的过程,补充了一些php-fpm相关的知识。什么是php-fpm:php-fpm是FastCGI进程管理器,用来控制php的内存和进程。运行环境:CentOS7问题查看:首先查看php进程总数:pstree|grepphp-fpmecho:|-php-fpm---20*[php-fpm]根据echo信息,有20个php在查询-fpm过程中。您还可以使用以下命令列出消耗内存最多的前50个进程:psauxw|head-1;psauxw|sort-rn-k4|head-50解决过程:接下来我们通过修改配置文件对php-fpm进行优化,以达到降低内存占用的目的。我的php-fpm配置文件在.../server/php/etc/目录下,进入这个目录。先备份原来的配置文件:cpphp-fpm.confphp-fpm.conf.bak注意:用vim打开配置文件后,按Esc键,然后输入“/”,再输入“xxx”找到“xxx”字符串。具体配置参数如下:pm.max_children=100改为:pm.max_children=25pm.start_servers=20改为pm.start_servers=5pm.min_spare_servers=5改为pm.min_spare_servers=2pm.max_spare_servers=35改为pm.max_spare_servers=10重启服务器:重启后可以发现内存占用比之前低了。注:php-fpm.conf中参数说明:pm.max_children:静态模式开启的php-fpm进程数。pm.start_servers:动态模式下初始php-fpm进程数。pm.min_spare_servers:动态模式下php-fpm进程的最小数量。pm.max_spare_servers:动态模式下php-fpm进程的最大数量。在进行上述设置时,我将php-fpm的执行模式设置为动态:pm=dynamicphp-fpm有两种执行模式:一种是Static,另一种是Dynamic。如果设置为静态,则只有参数pm.max_children起作用。如果设置为dynamic,pm.start_servers、pm.min_spare_servers和pm.max_spare_servers三个参数将起作用。设置为dynamic后,php-fpm启动时会根据pm.start_servers的参数设置启动相应数量的进程,然后php-fpm的进程数会保持在pm.min_spare_servers指定的数量和pm.max_spare_servers。如何选择使用php-fpm的静态或动态执行方式:动态php-fpm执行方式可以让php-fpm释放多余的进程,从而节省内存资源。静态的php-fpm执行方式不允许php-fpm释放多于进程,避免了频繁启动或停止php-fpm进程,从而在某些情况下减少服务器的响应时间。
