博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php-fpm 进程管理
阅读量:4678 次
发布时间:2019-06-09

本文共 5392 字,大约阅读时间需要 17 分钟。

2017年4月2日 20:39:16 星期日

ps -ef | grep php-fpm | grep master | awk '{print $2}' | xargs kill -12  #kill -12 就是告知master进程平滑重启

或 ps -ef | grep php-fpm | grep master | awk '{print $2}' | xargs sudo kill -12

 

2015年2月26日 15:40:15

先查找 PHP-FPM 的进程号

1 ps -ef | grep php-fpm2 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 www4 nobody     902   900  0 Feb12 ?        00:00:13 php-fpm: pool www5 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=011     12 start() {13     [[ -x $BINFILE ]] || exit 514     [[ -f $CFGFILE ]] || exit 615        16     $BINFILE -t >/dev/null 2>&117        18     if [[ $? -ne 0 ]]; then19         echo "The php-fpm configure has error."20         return 121     fi22        23     echo "Starting php-fpm......"24     sudo $BINFILE -c ${INIFILE} -y $CFGFILE -g ${PIDFILE}25     RETVAL=$?26     echo "ok~"27     [[ $RETVAL -eq 0 ]] && touch $LOCKFILE28        29     return $RETVAL30 }31     32 stop() {33     echo "Shutting down php-fpm......"34        35     if [[ -f $PIDFILE ]]; then36         kill -3 `cat ${PIDFILE}`37     else38         kill -3 `ps aux | grep php-fpm | awk '/master/{print $2}'`39     fi40        41     RETVAL=$?42     echo "ok~"43     [[ $RETVAL -eq 0 ]] && sudo rm -f $LOCKFILE $PIDFILE44        45     return $RETVAL46 }47     48 restart() {49     stop50     sleep 151 52     start53     sleep 154        55     RETVAL=$?  56     return $RETVAL57 }58     59 reload() {60     echo -n $"Reloading php-fpm......"61        62     if [[ -f $PIDFILE ]]; then63         kill -USR2 `cat ${PIDFILE}`64     else65         kill -USR2 `ps aux | grep php-fpm | awk '/master/{print $2}'`66     fi67        68     RETVAL=$?69     echo "ok~"70        71     return $RETVAL72 }73     74 case "$1" in75 start)76     start77     ;;78        79 stop)80     stop81     ;;82        83 restart)84     restart85     ;;86        87 reload)88     reload89     ;;90        91 *)92     echo "Usage: service php-fpm {start|stop|restart|reload}"93     RETVAL=194 esac95     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 www2 nobody   16302 30485  0 10:21 ?        00:00:01 php-fpm: pool www3 nobody   16303 30485  0 10:21 ?        00:00:01 php-fpm: pool www4 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 www3 nobody   16839 16837  0 17:15 ?        00:00:00 php-fpm: pool www4 nobody   16840 16837  0 17:15 ?        00:00:00 php-fpm: pool test5 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相关指令的值

转载于:https://www.cnblogs.com/iLoveMyD/p/4301429.html

你可能感兴趣的文章
<mvc:annotation-driven />与<context:annotation-config/>
查看>>
【UML】概念、关联、画画(一)
查看>>
由于空间,注定的结果——第五届山东省ACM编程比赛总结
查看>>
Android复制iPhone日期和时间选择器
查看>>
Jquery Dom节点常用操作
查看>>
深入理解正则表达式
查看>>
php学习笔记-定义常量
查看>>
七周七语言:Io Day 2
查看>>
robotframework 下对于web弹出框的处理
查看>>
HTML5 Web 存储
查看>>
3.29上午
查看>>
spring(三)
查看>>
ofbiz最新版13.07.01环境搭建、安装(linux环境下)
查看>>
userlist.js:1 Uncaught ReferenceError: $ is not defined
查看>>
C语言-常量指针与指针常量
查看>>
20145303 《Java程序设计》第7周学习总结
查看>>
Linux内核如何装载和启动一个可执行程序
查看>>
Socket网络编程--epoll小结
查看>>
数据库索引的实现原理
查看>>
32-3Sum
查看>>