php-fpm进程数控制
2024-08-24 07:35:56
一、名词解释
CGI是Common Gateway Interface(通用网管协议),用于让交互程序和Web服务器通信的协议。负责处理URL的请求,启动一个进程,将客户端发送的数据作为输入,有Web服务器收集程序的输出并加上合适的头部,再发送回客户端。
FastCGI是基于CGI的增强版本的协议,不同于创建新的进程来服务请求,使用持续的进程和创建的子进程来处理连串的进程,这些进程由FastCGI服务器管理,开销更小,效率更高。
PHP-FPM是PHP实现的FastCGI Process Manager(FastCGI进程管理器),用于替换PHP FastCGI的大部分功能,适用于高负载网站。支持的功能如:
1. 平滑停止/启动的高级进程管理功能
2. 慢日志记录脚本
3. 动态/静态子进程产生
4. 基于php.ini的配置文件
二、PHP-FPM配置
PHP-FPM配置文件为php-fpm.conf (例如:php-fpm容器中的/usr/local/etc/php-fpm.d/xlaravel.pool.conf)。下面所有的子进程均指php-fpm进程,可以在终端通过 ps aux |grep php 查看到。
- 显示 php-fpm: pool www 的代表work子进程(实际处理请求)
- 显示 php-fpm: process master 的代表master主进程(负责管理work子进程)
user = www-data
group = www-data
#启动进程的帐户和组 listen = 0.0.0.0:9000 pm = dynamic
#如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由以下参数决定:
pm.max_children = 20 #,子进程最大数
pm.start_servers = 45 #,启动时的进程数
pm.min_spare_servers = 30 #,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_spare_servers = 60 #,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理 request_terminate_timeout = 300
#设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的’max_execution_time’因为某些特殊原因没有中止运行的脚本有用. 设置为 ’0′ 表示 ‘Off’.当经常出现502错误时可以尝试更改此选项。 catch_workers_output = yes
#重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空.
php-fpm优化参数介绍 他们分别是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。 pm:表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。 下面4个参数的意思分别为:
pm.max_children:静态方式下开启的php-fpm进程数量
pm.start_servers:动态方式下的起始php-fpm进程数量
pm.min_spare_servers:动态方式下的最小php-fpm进程数
pm.max_spare_servers:动态方式下的最大php-fpm进程数量 区别:
如果dm设置为 static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。
如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。
系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,
然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数
ps auxw|head -1;ps auxw|sort -rn -k4|head -40
# 查看消耗内存最多的前40个进程 ps -fe |grep "php-fpm"|grep "pool"|wc -l
# 查看服务器上一共开了多少的 php-cgi 进程
最新文章
- maven权威指南学习笔记(四)—— maven生命周期(lifecycle)
- Python之with语句
- Web前端开发基础 第四课(CSS小技巧)
- GCC编译器编译链接
- Linux----快速注释包含特定字符串的行
- 制作PPT时,可能这些小习惯你需要注意
- javascrip中array使用(续)
- js - get-the-value-from-the-url-parameter(可以在非模态对话框中使用)
- 批量处理csv格式转换成xls
- Hibernate composite key
- Hadoop的编译
- MySQL 开发实践
- DP问题
- Flask入门第一天
- 挂载银行前置机Ukey到windows server2012虚拟机的操作记录
- 矩形嵌套(dp)
- 【Python】requests.post请求注册实例
- Linux上实现Windows的SQLPlus保存SQL历史记录功能
- js document.activeElement及使用
- 20145325张梓靖 《Java程序设计》第6周学习总结