【PHP面试题46】php-fpm的工作模式是什么,如何进行配置?

news2025/1/16 18:42:25

文章目录

  • 一、前言
  • 二、PHP-FPM的工作模式
  • 三、进程数量配置依据
  • 四、php-fpm常见的配置参数
    • 4.1 pm.max_children
    • 4.2 pm.start_servers
    • 4.3 pm.min_spare_servers
    • 4.4 pm.max_spare_servers
    • 4.5 pm.max_requests
    • 4.6 request_terminate_timeout
    • 4.7 max_input_time
    • 4.8 upload_max_filesize
    • 4.9 max_execution_time
    • 4.10 memory_limit
  • 五、总结


一、前言

本文已收录于PHP全栈系列专栏:PHP面试专区。
计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列,欢迎大家提前关注锁定。

在使用PHP进行Web开发时,除了使用Apache等Web服务器来解析PHP脚本外,我们还可以使用PHP-FPM(FastCGI Process Manager)来管理PHP脚本的处理。相比于传统的CGI方式或者mod_php模块,PHP-FPM有着更好的性能和可伸缩性。
在这里插入图片描述

本文将介绍PHP-FPM的工作模式以及如何配置进程数量,希望对需要使用PHP-FPM的开发者和系统管理员有所帮助。

二、PHP-FPM的工作模式

PHP-FPM是一个用于解析和执行PHP脚本的进程管理器。它采用了多进程的工作模式,主要包括以下几个组件:

  1. Master Process:负责管理所有的Worker Process和其他相关的进程,监听端口并接收请求。
  2. Worker Process:由Master Process创建,实际执行PHP脚本的进程。
  3. Request Queue:用于存储来自客户端的请求,Master Process会根据一定的算法从队列中选择一个空闲的Worker Process来处理请求。

PHP-FPM的工作流程大致如下:

  1. 客户端发送请求到Web服务器。
  2. Web服务器将请求发送给PHP-FPM的Master Process。
  3. Master Process将请求放入Request Queue中,并选择一个空闲的Worker Process处理请求。
  4. Worker Process从Request Queue中获取请求,解析执行PHP脚本,并将结果返回给客户端。

三、进程数量配置依据

配置PHP-FPM的进程数量是一个重要的任务,合理的配置可以充分利用服务器资源,提高性能和响应速度。而不合理的配置可能会导致服务器负载过高或者资源浪费。

进程数量的配置依据主要有以下几个方面:

  1. 服务器硬件资源:服务器的CPU核心数、内存大小等硬件资源是配置进程数量的重要参考依据。一般来说,服务器的CPU核心数越多,可以配置的Worker Process数量也越多。
  2. 预估的并发请求数:根据网站的访问量和负载情况预估并发请求数,从而确定需要配置的Worker Process数量。一般来说,每个Worker Process可以处理多个并发请求。
  3. 主机环境和应用类型:不同的主机环境和应用类型可能对进程数量有不同的要求。例如,一个处理静态内容的应用可以配置更少的Worker Process,而一个处理大量动态内容的应用可能需要更多的Worker Process。

根据以上依据,我们可以通过以下步骤来配置进程数量:

  1. 确定服务器的硬件资源,获取CPU核心数和可用内存大小。
  2. 对网站的访问量进行分析,预估并发请求数。
  3. 根据硬件资源和并发请求数,计算出每个Worker Process可以处理的请求数量。
  4. 根据主机环境和应用类型,进一步调整进程数量。

四、php-fpm常见的配置参数

4.1 pm.max_children

用于限制同时处理的php-fpm子进程的最大数量。当达到此限制时,新的请求将会被排队等待处理。

4.2 pm.start_servers

启动php-fpm进程的初始数量。它定义了在刚启动php-fpm时应该启动多少个子进程来处理请求。

4.3 pm.min_spare_servers

最小空闲php-fpm子进程数。当空闲进程数少于此值时,php-fpm将会自动创建新的子进程来满足请求。

4.4 pm.max_spare_servers

最大空闲php-fpm子进程数。当空闲进程数超过此值时,php-fpm将会关闭多余的子进程以减少系统资源占用。

4.5 pm.max_requests

指定每个php-fpm子进程处理请求的最大数目。达到此限制后,php-fpm将会重新启动该子进程,以防止内存泄漏。

4.6 request_terminate_timeout

用于设置php脚本的最大执行时间。如果一个脚本执行时间超过此限制,php-fpm将会强制停止该脚本的执行。

4.7 max_input_time

设置php脚本接收输入的最长时间。超过此限制,php-fpm将会终止该脚本的执行。

4.8 upload_max_filesize

用于限制上传文件的最大大小。

4.9 max_execution_time

设置php脚本的最大执行时间。超过此限制,php-fpm将会强制停止该脚本的执行。

4.10 memory_limit

限制php脚本可使用的最大内存量。

五、总结

本文介绍了PHP-FPM的工作模式以及如何配置进程数量。通过合理的配置PHP-FPM进程数量,可以更好地利用服务器资源,提高性能和响应速度。在实际配置中,我们需要根据服务器的硬件资源、预估的并发请求数、主机环境和应用类型等因素来确定进程数量。只有在全面考虑这些因素的基础上,才能获得最佳的性能和吞吐量。

本文已收录于PHP全栈系列专栏:PHP面试专区。
计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列,欢迎大家提前关注锁定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/755536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE4 常用控制台命令

ue4执行控制台命令有两种方式,一是在运行时按~呼出控制台输入命令后回车执行,二是调用蓝图函数ExecuteConsoleCommand函数传入参数执行命令,需要注意shipping包无法执行控制台命令 常用命令: Stat FPS 显示帧率 Stat Slate 显示…

激斗云计算:互联网大厂打响新一轮排位战

大模型如同一辆时代列车,所有科技大厂都想上车。 自去年底ChatGPT一炮而红,国内外数十家科技大厂、创业公司、机构相继下场,一时间掀起大模型的热浪。 《中国人工智能大模型地图研究报告》显示,截至今年5月28日,中国…

http连接处理(中)(四)

2. 结合代码分析请求报文解析 上一节我们对http连接的基础知识、服务器接收请求的处理流程进行了介绍,接下来将结合流程图和代码分别对状态机和服务器解析请求报文进行详解。 流程图部分,描述主、从状态机调用关系与状态转移过程。 代码部分&#xff…

内 网 优 化

拓扑 需求 1)所有部门中都使用了网关冗余技术,为了增强网关稳定性和冗余性 -配置VRRP -SW5是VLAN10和VLAN20的Master ,是VLAN30的Backup -SW6是VLAN10和VLAN20的Backup,是VLAN30的Master 2)交换机之间存在很多冗余链路,必须防止环…

AtcoderABC253场

A - Median?A - Median? 题目大意 给定三个整数a、b和c&#xff0c;判断b是否是这些整数的中位数。 思路分析 判断升序降序两种情况 时间复杂度分析 O(1) 代码 #include<iostream> using namespace std; int main() { int a,b,c; cin>>a>>b>>…

Non-Local Video Denoising by CNN

摘要 Non-local patch based methods were until recently state-of-the-art for image denoising but are now outper formed by CNNs. Y et they are still the state-of-the-art for video denoising, as video redundancy is a key factor to attain high denoising perfor…

JavaWeb——Cookie和Session的工作流程

目录 一、定义 1、Cookie定义 2、Session 二、Cookie和Session的联系和区别 1、联系 2、区别 一、定义 1、Cookie定义 Cookie是浏览器在本地存储数据的一种机制&#xff0c;来自于服务器。 服务器在响应中会带有Set-Cookie字段&#xff0c;通过这个字段就可以把要保存在浏…

及早识别面肌痉挛症状,科学治疗是关键!

随着现代社会的快节奏生活和各种压力的增加&#xff0c;面肌痉挛这一神经肌肉紊乱性疾病的发病率也逐渐上升。面肌痉挛是指由于面肌肌肉群异常收缩而导致的面部肌肉抽搐和不自主运动的症状。如果不及早识别和治疗&#xff0c;将对患者的生活质量产生严重影响。因此&#xff0c;…

C语言,封装自定义函数

1、封装自定义函数&#xff0c;计算数组的最大和&#xff0c;最大差 //第一数组 #include <stdio.h> #include <string.h> int MaxSum(int len,int arr[]); int MaxDel(int len,int arr[]); int main(int argc, const char *argv[]) {int arr[]{5,6,8,51,31,51,88…

2023 7.10~7.16 周报 (RTM研究与正演的Python复现)

0 上周回顾 上周简单阅读了论文《Deep-Learning Full-Waveform Inversion Using Seismic Migration Images》, 但是并没读完…因为这篇论文中提到一个技术吸引了注意力: RTM (Reverse-time migration) 于是计划下周去专门熟悉熟悉RTM的机制, 并且试着用Python复现这个操作. 另…

数据处理 | Matlab实现Lichtenberg算法的机器学习数据选择

文章目录 效果一览基本介绍源码设计参考资料效果一览 基本介绍 Matlab实现Lichtenberg算法的机器学习数据选择 Lichtenberg算法适用于回归和分类数据集,并根据数量和最大覆盖范围选择最佳算法。Lichtenberg算法(Lichtenberg algorithm,LA)是由Pereira等人于2021年提出的一种…

Python爬虫——urllib_下载

urlretrieve(url&#xff0c; filename)函数 url 代表的是下载的路径 filename文件的名字 下载网页: url_page "http://www.baidu.com" urllib.request.urlretrieve(url_page, baidu.html)下载图片: url_img "https://img0.baidu.com/it/u2751401762,34216…

VUE研究

1.v2与v3的区别 vue3对源码的管理根据模块进行拆分&#xff0c;在不同目录中对不同的模块进行分别维护&#xff1b; vue3是基于typescript语言进行开发的&#xff0c;这样可以进行更好的类型检查&#xff1b; vue3体积减小&#xff0c;去除了不常使用的API&#xff0c;Tree sha…

DevOps B站学习版(二)

学习地址&#xff1a; 01.DevOps的诞生_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Pt4y1H7Zq/?p1&vd_source1f09c23f556b3d6a9b7706f8db12fa54%E3%80%81 正文开始 找到这个地方&#xff0c;修改 可以写成基于标签拉取和构建工程&#xff0c;下面也选择Tag即可…

Python 自学 day03 容器tuple(元组)的定义与使用,序列,字典,集合,多返回值传递,不定长参数函数

1. tuple 元组 1.1 元组的定义 定义&#xff1a;元组同列表一样&#xff0c;都是可以封装多个、不同类型的元素在内。但最大的不同点在于: 元组一旦定义完成﹐就不可修改。 1.2 元组的创建方法 t1 (1,111,1111,11,1111,222) #元组的定义方法 t2 (22,) …

Postman+Newman+Git+Jenkins+Slack 接口自动化和监控

目录 前言&#xff1a; 一、Newman 介绍&#xff1a; 1、简介 2、安装 3、检查 4、运行 二、Newman 命令行介绍&#xff1a; newman run [options] 测试结果配置 ------------------------------------分 割 线----------------------------------------------------…

2023年最新水果编曲软件FL Studio Producer Edition 21.0.3 Build 3517中文完美至尊解锁免费下载安装激活详细教程

fl studio21.0.3.3517中文解锁特别版是一款功能强大的编曲软件&#xff0c;也就是众所熟知的水果软件。它可以编曲、剪辑、录音、混音&#xff0c;让您的计算机成为全功能录音室。除此之外&#xff0c;这款软件功能非常强大&#xff0c;为用户提供了许多音频处理工具&#xff0…

《红蓝攻防构建实战化网络安全防御体系》读书笔记

作者&#xff1a;奇安信安服团队 ◆ 1.3 红队 各个团队在演练中的角色与分工情况如下。目标系统运营单位&#xff1a;负责红队整体的指挥、组织和协调。安全运营团队&#xff1a;负责整体防护和攻击监控工作。攻防专家&#xff1a;负责对安全监控中发现的可疑攻击进行分析和研…

LiveNVR监控流媒体Onvif/RTSP功能-安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口

LiveNVR安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口&#xff1f; 1、安全控制1.1、接口鉴权1.2、禁止游客访问 2、401 Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.2.1、携带 CookieToken2.1.2.2、携带 U…

VUE- quill-editor 编辑器使用及自定义toobar详解

vue使用编辑器&#xff0c;这里讲解编辑器quil-editor 官网&#xff1a;https://quilljs.com/docs/modules/toolbar 1&#xff1a;安装quill-eidtor npm i quill1.3.6 --save 2&#xff1a;创建一个页面&#xff0c;再template里写入 <template><div class"…