php-fpm 进程管理
2017年4月2日 20:39:16 星期日
ps -ef | grep php-fpm | grep master | awk '{print $2}' | xargs kill -12 #kill -12 就是告知master进程平滑重启
2015年2月26日 15:40:15
先查找 PHP-FPM 的进程号
1 ps -ef | grep php-fpm 2 root 900 1 0 Feb12 ? 00:00:39 php-fpm: master process (/usr/local/web/php/etc/php-fpm.conf) 3 nobody 901 900 0 Feb12 ? 00:00:13 php-fpm: pool www 4 nobody 902 900 0 Feb12 ? 00:00:13 php-fpm: pool www 5 nobody 1911 900 0 Feb13 ? 00:00:12 php-fpm: pool www
可以看到主进程的pid是 900
然后用kill命令给这个进程发送重启的信号
kill -SIGUSR2 900
其它的信号:
1 SIGINT, SIGTERM 立刻终止 2 SIGQUIT 平滑终止 3 SIGUSR1 重新打开日志文件 4 SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块
bash 脚本(根据网上找的脚本,精简后的, 去掉了检测当前pid的grep+awk代码, 建议使用时直接使用restart指令, Mac上可用,但是注意权限)
1 #!/bin/sh 2 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 3 4 BINFILE="/usr/sbin/php-fpm" 5 CFGFILE="/etc/php-fpm.conf" 6 PIDFILE="/var/run/php-fpm.pid" 7 LOCKFILE="/var/lock/php-fpm.lock" 8 INIFILE="/etc/php.ini" 9 10 RETVAL=0 11 12 start() { 13 [[ -x $BINFILE ]] || exit 5 14 [[ -f $CFGFILE ]] || exit 6 15 16 $BINFILE -t >/dev/null 2>&1 17 18 if [[ $? -ne 0 ]]; then 19 echo "The php-fpm configure has error." 20 return 1 21 fi 22 23 echo "Starting php-fpm......" 24 sudo $BINFILE -c ${INIFILE} -y $CFGFILE -g ${PIDFILE} 25 RETVAL=$? 26 echo "ok~" 27 [[ $RETVAL -eq 0 ]] && touch $LOCKFILE 28 29 return $RETVAL 30 } 31 32 stop() { 33 echo "Shutting down php-fpm......" 34 35 if [[ -f $PIDFILE ]]; then 36 kill -3 `cat ${PIDFILE}` 37 else 38 kill -3 `ps aux | grep php-fpm | awk '/master/{print $2}'` 39 fi 40 41 RETVAL=$? 42 echo "ok~" 43 [[ $RETVAL -eq 0 ]] && sudo rm -f $LOCKFILE $PIDFILE 44 45 return $RETVAL 46 } 47 48 restart() { 49 stop 50 sleep 1 51 52 start 53 sleep 1 54 55 RETVAL=$? 56 return $RETVAL 57 } 58 59 reload() { 60 echo -n $"Reloading php-fpm......" 61 62 if [[ -f $PIDFILE ]]; then 63 kill -USR2 `cat ${PIDFILE}` 64 else 65 kill -USR2 `ps aux | grep php-fpm | awk '/master/{print $2}'` 66 fi 67 68 RETVAL=$? 69 echo "ok~" 70 71 return $RETVAL 72 } 73 74 case "$1" in 75 start) 76 start 77 ;; 78 79 stop) 80 stop 81 ;; 82 83 restart) 84 restart 85 ;; 86 87 reload) 88 reload 89 ;; 90 91 *) 92 echo "Usage: service php-fpm {start|stop|restart|reload}" 93 RETVAL=1 94 esac 95 96 exit $RETVAL
View Code
配置文件翻译:
[全局配置]
include: 本配置文件中的相对路径都是以php的安装路径的根目录为基准的, 可以在命令行中用-p参数制定相对路径
pid: 进程号所在的文件, 默认放在 path/to/php/var
emergency_restart_threshold (进程个数) emergency_restart_interval (时间段)
在一定时间段内, 因为SIGSEGV(内存段错误) 或者 SIGBUS(总线错误)导致进程退出个数等于某个值fpm就会重启
process.max: 控制子进程最大数的全局变量, 后边的设置子进程数量的指令受到这个值的限制, 0表示无限制
process.priority: master进程的优先级, -19~20, 子进程会继承该值
rlimit_*: resource limit, Linux资源限制, 使用默认值的话, 就以操作系统设置为准
events.mechanism: 事件通知机制, 注释掉则自动选择, 目前最流行的是epoll, 将准备就绪的进程号(大概这样理解吧)放到一个文件里, 每次只用扫描这个文件就知道谁准备好了
[进程池配置]
[www] 进程池名字为www
1 nobody 15942 30485 0 10:19 ? 00:00:15 php-fpm: pool www 2 nobody 16302 30485 0 10:21 ? 00:00:01 php-fpm: pool www 3 nobody 16303 30485 0 10:21 ? 00:00:01 php-fpm: pool www 4 root 30485 1 0 Apr19 ? 00:10:46 php-fpm: master process (/..../php-fpm.conf)
也可以在一个配置文件中定义多个进程池(监听不同的端口)
1 root 16837 1 0 17:15 ? 00:00:00 php-fpm: master process (/..../php-fpm-test.conf) 2 nobody 16838 16837 0 17:15 ? 00:00:00 php-fpm: pool www 3 nobody 16839 16837 0 17:15 ? 00:00:00 php-fpm: pool www 4 nobody 16840 16837 0 17:15 ? 00:00:00 php-fpm: pool test 5 nobody 16841 16837 0 17:15 ? 00:00:00 php-fpm: pool test
listen = 127.0.0.1:9001 监听ip+端口
listen.allowed_clients , 允许访问的ip
priority 优先级
pm 控制子进程数量的模式 static, 固定数量; dynamic, 动态变化数量, 至少有一个; ondemand, 来一个请求fork一个
pm.max_children :
当pm=static时 子进程的数量, 当pm=dynamic 或者 pm=ondemand时, 子进程最大的进程数
该条命令相当于 apache的 mpm_prefork指令, 相当于php的PHP_FCGI_CHILDREN环境变量
pm中的默认值是基于低配置服务器设置的, 可以修改相应的配置指令去适合你自己的服务器
pm.start_servers: 启动fpm时生成的子进程数目
pm.min_spare_servers: 最小空闲进程数
pm.max_spare_servers: 最大空闲进程数
pm.min_spare_servers < pm.start_servers < pm.max_spare_servers
pm.max_requests: 每个子进程再重启前所能处理的最大请求数, 0表示无限制, 相当于PHP_FCGI_MAX_REQUESTS
pm.status_path = /status: http://www.foo.bar/status?json&full
查看fpm的状态信息, 必须以"/"开头, 最好不要以.php结尾
返回信息有: 进程池名字, 进程开始日期, 运行了多少秒, 处理了多少请求, 队列里边有多少待处理的请求, 迄今为止队列里最大的请求数, 活跃进程数, 空闲进程数, 总进程数....
json, 表示可以指定放回txt/json/xml格式
full, 表示更详细的信息, 执行脚本信息, cpu信息, 内存信息, 请求数据的长度.....
ping.path = /ping
查看进程是否还有响应, 可以用来制作图表, 进行负载均衡(踢掉某个不响应的进程), 给团队触发提醒
以"/"开头, 最好不要以.php结尾
ping.response 自定义返回信息, 以文本格式返回(text/plan), 同时返回 200 响应码
access.log: 访问日志地址
access.format: 日志格式
slowlog: 慢响应日志地址
request_slowlog_timeout: 评定为慢响应的时间长度
request_terminate_timeout: 请求最长处理时间, 如果php.ini里的max_execution_time没有起作用, 这里应该会起作用
rlimit_files: 本pool里打开的最大文件资源数
rlimit_core: 本pool里使用的最大(core)内核数
chroot: 进程启动时, 将根目录转向到这个制定设定的路径, 绝对路径
chdir: 进程启动时, 将当前目录设定为这个指令制定的目录, 相对目录
catch_workers_output: 将标准输出/错误输出写入到main日志文件中,对响应有几个毫秒的延误, 不设置, 则输出到标准输出设备中(/dev/null, 应该是显示器吧)
security.limit_extensions: .php .html 限制解析文件的后缀, 设为空, 则解析任何后缀的文件
php_* 重写或者合并php.ini相关指令的值
php-fpm 进程管理相关推荐
- php 脚本 fpm缓存,PHP生命周期及fpm(FastCGI进程管理器)的运作方式
PHP在web方式中如何改了文件就立即生效的,重要的几个概念:sapi: 可以简单的理解为php引擎对外的一个统一接口,使得php可以和外部程序进行交互 php的生命周期中关键四个调用: MINT - ...
- FastCGI 进程管理器(FPM)
FastCGI 进程管理器 FPM(FastCGI 进程管理器)是 PHP FastCGI 的主要实现,包含大部分对高负载网站有用的功能. 它的功能包括: 支持平滑停止/启动的高级进程管理功能: 进程 ...
- FastCGI 进程管理器(FPM)配置项目列表
FPM 使用类似 php.ini 语法的 php-fpm.conf 和进程池配置文件. php-fpm.conf 全局配置段 pid string PID 文件的位置.默认为空. error_log ...
- php fpm子进程数配置,php-fpm进程管理方式以及子进程数量配置原则详解
php-fpm的进程管理方式pm是一个重要的参数,主要来控制子进程的数量. pm进程管理方式有三种: static: 表示在php-fpm运行时直接fork出 pm.max_chindren个子进程 ...
- php fpm的pool,php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理
这篇文章介绍的内容是关于php-fpm的pool.PHP慢执行日志.open_basedir.php-fpm进程管理,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 php-fpm的po ...
- php fpm 日志级别,php-fpm的pool、php-fpm慢执行日志、 php-fpm定义open_basedir、php-fpm进程管理...
php-fpm的pool php-fpm的pool [root@iZbp1e0xboek6oow616aoiZ ~]# vim /usr/local/php-fpm/etc/php-fpm.conf ...
- 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理
2019独角兽企业重金招聘Python工程师标准>>> 12.21 php-fpm的pool 为了避免因多站点使用同一个pool时因一个站点故障导致pool出问题,进而影响使用同一个 ...
- php-frm进程管理,PHP内核探索-进程管理
进程管理方式 首先我们了解一下php的三种不同的进程管理方式: static:静态管理进程.在启动时,master按照pm.max_children配置fork出对应数量的work进程,即work的进 ...
- php 进程管理,PHP 进程管理器 PHP-FPM
php-fpm是什么 php-fpm是PHP的一个进程管理器.php下面的众多work进程皆有php-fpm进程管理器管理. php-fpm的工作原理 php-fpm全名是PHP FastCGI进程管 ...
- php-fpm进程的用户组,一文看懂PHP进程管理器php-fpm
php-fpm是什么 php-fpm是PHP的一个进程管理器.php下面的众多work进程皆有php-fpm进程管理器管理. php-fpm的工作原理 php-fpm全名是PHP FastCGI进程管 ...
最新文章
- Num55 boss09(activiti安装以及API)
- Android中SQLite的使用
- Rserve 实现java与R的互通
- antd option宽度自适应_Web移动端实现自适应缩放界面的方法汇总
- 神奇的 Go init 函数
- IO-00. Hello World! (5)
- IDEA创建Scala
- java精确除法运算-BigDecimal
- vue判断列表中包含某一项_判断字符串中是否包含某个字符串
- jeDate日期控件
- Dorado7 首页菜单CSS调整
- 操作系统考研复习——第四章(文件管理)
- TRYLIVE CLOTHING:AR个人魔法试衣间,试尽网上任何衣服
- 对开发框架的浅显认识
- 自助机处理违章显示服务器请求超时,违章问题处理了但联动云迟迟不给我确定,直到超时收取了我的违约金,立马解决了问题...
- iOS录音转码:amr转wav,wav转amr
- web服务器常见配置搭建详解(超详细)
- 安装win10,机械硬盘不能识别(光驱位置)
- 运营管理整改报告范文_银行营运管理自查报告4篇
- 【软件测试】回归测试的策略
热门文章
- android c/c++ eclipse 绿色版 环境的配置
- java与工业相机,OpenCV软件与工业相机的组合在机器视觉中的应用
- python字典的实现原理_Python字典的实现原理
- 如何优化计算机网络课程,计算机论文:探究如何优化计算机网络课程教学方法.docx...
- 网络爬虫流程与注意事项
- 非科班的我如何自学Python在一线城市找到一份15k的offer的?
- Distroless加固容器安全
- ajax怎么设置好友,好友按ajax新消息通知
- tensorflow 中报错ValueError: Found input variables with inconsistent numbers of samples: [5492, 14280]
- [USACO16JAN]Angry Cows S[二分+贪心]