PHP-FPM
先来了解一些名词概念:
CGI
是Common Gateway Interface
(通用网管协议),用于让交互程序和Web服务器通信的协议。它负责处理URL的请求,启动一个进程,将客户端发送的数据作为输入,由Web服务器收集程序的输出并加上合适的头部,再发送回客户端。
FastCGI
是基于CGI的增强版本的协议,不同于创建新的进程来服务请求,使用持续的进程和创建的子进程来处理一连串的进程,这些进程由FastCGI服务器管理,开销更小,效率更高。
PHP-FPM
是PHP实现的FastCGI Process Manager
(FastCGI进程管理器), 用于替换PHP FastCGI
的大部分附加功能,适用于高负载网站。支持的功能如:
平滑停止/启动的高级进程管理功能
慢日志记录脚本
动态/静态子进程产生
基于php.ini的配置文件
查看进程与子进程
ps aux | grep php
显示php-fpm: pool www
的代表work子进程(实际处理请求)
显示php-fpm: process master
的代表master主进程(负责管理work子进程)
子进程迟迟没有消失,导致进程不断的累加。最后导致系统的tasks 增加,加到五百多六百多七百多+++
那咋办,要是访问的人数并发特别多,进程数无上限了,机器吃不消宕机了,重启服务器;
再不行。我就写个定时脚本把这些进程干掉。
当然不是这样子的,这就是 php-fpm
所要管理的事情了, 可能经常有人问这块的知识点,或者面试的时候面试官问你,支支吾吾的。
还记得刚刚查看php进程命令显示的数据吗?
直接查看这边的配置
参考