php-fpm(FastCGIProcessManger)是一个PHPFastCGI管理器,专门与Nginx的ngx_fastcgi_modul模块连接,处理动态请求。初始化PHP安装后,可以从以下三个方向修改默认配置,以达到最佳效果。1、核心配置文件核心配置文件其实就是php.ini,通常用来开启或关闭第三方模块,修改PHP时区。#vim/usr/local/etc/php/php.inidate.timezone=Asia/Shanghai2.全局配置文件全局配置文件php-fpm.conf通常用来配置一些辅助功能。#vim/usr/local/etc/php-fpm.conferror_log=/var/log/php-fpm/error.loglog_level=notice;process_max=0deamonize=yes参数分析:error_log:错误日志路径log_level:日志级别,默认isnoticealert:必须立即处理error:错误条件warning:警告条件??notice:一般重要信息debug:调试信息process_max:控制最大子进程数的全局变量,不建议设置具体数字,因为它将限制扩展配置。daemonize:是否开启daemon进程,默认是yes,一般不要在php-fpm.conf中设置process_max,因为会限制www.conf中的配置。3、扩展配置文件扩展配置文件www.conf通常是php-fpm服务相关的配置,大部分的优化都需要修改这个配置文件。#vim/usr/local/etc/php-fpm.d/www.conflisten=127.0.0.1:9000slowlog=/var/log/php-fpm/www-slow.log#这里按照10G空闲内存设置pm=dynamicpm.start_servers=16pm.max_children=256pm.min_spare_servers=16pm.max_spare_servers=32pm.max_requests=1000参数分析:listen:有两种通信方式。socket:unix:/run/php/php7.3-fpm.sockhttp:127.0.0.1:9000因为php-fpm和ngx_fastcgi_modul的通信方式是9000端口,所以默认是127.0.0.1:9000slowlog:慢查询日志pathpm:进程管理模式static:静态模式。始终保持固定数量的子进程,并以最大数量的子进程使用它。这种方法非常不灵活,通常不是默认方法。pm.max_children:最大子进程数。动态:动态模式。按照固定的最小子进程数启动,同时使用最大子进程数来限制。pm.start_servers:默认启用的进程数pm.min_spare_servers:最小空闲进程数pm.max_spare_servers:最大空闲进程数pm.max_children:最大子进程数pm.max_requests:每个进程的请求数processcanresponselimit后,PHP进程会自动释放。nodaemonize:每个进程空闲一定时间后会被杀死。pm.max_children:最大子进程数pm.process_idle_timeout:多少秒后,一个空闲进程会被kill掉注意:max_children是PHPFPMPool的最大子进程数,其值取决于实际空闲内存服务器。假设你有一台10G运行内存的服务器。我们知道一个空闲的PHP进程占用1M内存,一个正在处理请求的PHP进程大概占用10M-40M内存。这里每个PHP请求占用40M内存,那么max_children=10*1024M/40M=256,所以这个还是要根据实际环境设置。以上就是php-fpm初始化配置的核心部分。
