php-fpm工作流程
php-fpm全名是PHP FastCGI进程管理器
php-fpm启动后会先读php.ini,然后再读相应的conf配置文件,conf配置可以覆盖php.ini的配置。
启动php-fpm之后,会创建一个master进程,监听9000端口(可配置),master进程又会根据fpm.conf/www.conf去创建若干子进程,子进程用于处理实际的业务。
当有客户端(比如nginx)来连接9000端口时,空闲子进程会自己去accept,如果子进程全部处于忙碌状态,新进的待accept的连接会被master放进队列里,等待fpm子进程空闲;
这个存放待accept的半连接的队列有多长,由 listen.backlog 配置。
php-fpm全局配置说明
配置里面的所有相对路径,都是相对于php的安装路径。
除了有php-fpm.conf配置文件外,通常还有其他的*.conf配置文件(也可以不要,直接在php-fpm.conf配置)用于配置进程池,不同的进程池可以用不同的用户执行,监听不同的端口,处理不同的任务;多个进程池共用一个全局配置。
include=/opt/remi/php56/root/etc/php-fpm.d/*.conf 载入其他的配置文件。
php-fpm全局配置参数中文说明:
pid = /opt/remi/php56/root/var/run/php-fpm/php-fpm.pid
#pid进程文件,默认为none。error_log = /opt/remi/php56/root/var/log/php-fpm/error.log
#错误日志位置,默认:安装路径 #INSTALL_PREFIX#/log/php-fpm.log。如果设置为syslog,log就会发送给syslogd服务而不会写进文件里。syslog.facility = daemon
#把日志写进系统log,linux还不够熟悉,暂时不用理会。syslog.ident = php-fpm
#系统日志标示,如果跑了多个fpm进程,需要用这个来区分日志是谁的。log_level = notice
#日志等级,默认notice,可选:alert, error, warning, notice, debugemergency_restart_threshold = 60
#配合下面emergency_restart_interval参数emergency_restart_interval = 60s
#如果在此参数设置的时间内,出现SIGSEGV或SIGBUS的子进程数超过emergency_restart_threshold参数设置的值,那么fpm就会优雅的重启,值是0表示off这个功能,可用的单位有:s秒,m分,h时,d天。process_control_timeout = 0
#设置子进程接受主进程复用信号的超时时间。这个每天明白,是过了这个时间就不能复用了?process.max = 128
#当动态管理子进程时,fpm最多能fork多少个进程,0表示无限制,这是所有进程池能启动子进程的总和,谨慎使用。process.priority = -19
#设置子进程的优先级,在master进程以root用户启动时有效;如果没有设置,子进程会继承master进程的优先级,值范围-19(最高)到20(最低),默认不设置。daemonize = yes
#设置成no用于调试bug,默认为yes。
新闻热点
疑难解答