当前位置: 首页 > news >正文

nginx,php-fpm

一,Nginx是异步非阻塞多进程,io多路复用

在这里插入图片描述
1、master进程:管理进程
master进程主要用来管理worker进程,具体包括如下4个主要功能: (1)接收来自外界的信号。 (2)向各worker进程发送信号。 (3)监控woker进程的运行状态。 (4)当woker进程退出后(异常情况下),会自动重新启动新的woker进程。
2、worker进程:处理请求
而基本的网络事件,则是放在worker进程中来处理了。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致,这里面的原因与nginx的进程模型以及事件处理模型是分不开的。
worker进程之间是平等的,每个进程,处理请求的机会也是一样的。当我们提供80端口的http服务时,一个连接请求过来,每个进程都有可能处理这个连接,怎么做到的呢?
Nginx采用异步非阻塞的方式来处理网络事件,类似于Libevent,具体过程如下:
1)接收请求:首先,每个worker进程都是从master进程fork过来,在master进程建立好需要listen的socket(listenfd)之后,然后再fork出多个worker进程。所有worker进程的listenfd会在新连接到来时变得可读,每个work进程都可以去accept这个socket(listenfd)。当一个client连接到来时,所有accept的work进程都会受到通知,但只有一个进程可以accept成功,其它的则会accept失败。
2)处理请求:当一个worker进程在accept这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,这样一个完整的请求就是这样的了
我们可以看到,一个请求,完全由worker进程来处理,而且只在一个worker进程中处理。worker进程之间是平等的,每个进程,处理请求的机会也是一样的。

虽然nginx采用多worker的方式来处理请求,每个worker里面只有一个主线程,那能够处理的并发数很有限啊,多少个worker就能处理多少个并发,何来高并发呢?非也,这就是nginx的高明之处,nginx采用了异步非阻塞的方式来处理请求,也就是说,nginx是可以同时处理成千上万个请求的。一个worker进程可以同时处理的请求数只受限于内存大小,Worker 进程 不再同步阻塞的去处理一个请求,而是可以同时处理多个请求,无需 I/O 等待。请求r1-1,r1-2,r1-2都再在woker1进程中,如果r1-1发生阻塞需要等待,worker1就会去处理r1-2,等到r1-1处理好了由事件通知再将结果返回。

二,php-fpm是阻塞式单线程模型

在这里插入图片描述

  1. 客户端发送的请求到达nginx后nginx会解析后转发给php-fpm进程管理器
  2. php-fpm在master进程中创建多个work进程,调用一个work进程处理php代码。有请求到达work后阻塞在fcgi_accept_request()上,各自accept请求然后处理,这期间是不会接收其他请求的,也就是说work进程同时只能响应一个请求,只有把这个请求处理完了才会处理下一个。
  3. 如果所有的work都处于忙碌状态(阻塞),那么这些请求就会阻塞在master进程上。
  4. 所有work均是抢占模式来处理请求。
  5. 抢占模式:每个进程都可以得到一定CPU时间片的时间处理,时间片结束或是进程发生阻塞(数据库连接、网络请求I/O(如发送短信、邮件第三方接口)、读写文件、sleep等待)就会触发上下文切换,CPU会经由调度程序去处理下一个进程的内容。等待阻塞结束再将进程由阻塞态加入就绪态队列(此时的进程处于就绪队列高等级),等待cpu调度执行。
  6. php从代码级别的执行上是单线程的, 但是由php-fpm进程管理机制是多进程单线程的, 也就是php是多进程执行的. 有效提高并发的响应效率。
    在这里插入图片描述

相关文章:

nginx,php-fpm

一,Nginx是异步非阻塞多进程,io多路复用 1、master进程:管理进程 master进程主要用来管理worker进程,具体包括如下4个主要功能: (1)接收来自外界的信号。 (2)向各worker进…...

网络编程(3/4)

广播 ​ #include<myhead.h>int main(int argc, const char *argv[]) {//1、创建套接字int sfd socket(AF_INET, SOCK_DGRAM, 0);if(sfd -1){perror("socket error");return -1;}//2、将套接字设置成允许广播int broadcast 1;if(setsockopt(sfd, SOL_SOC…...

vue computed计算属性

模板中的表达式虽然方便&#xff0c;但也只能用来做简单的操作&#xff1b;如果在模板中写太多逻辑&#xff0c;会让模板变得臃肿&#xff0c;难以维护&#xff1b;因此我们推荐使用计算属性来描述依赖响应式状态的复杂逻辑 1. 选项式 API 中&#xff0c;可以提供computed选项来…...

智慧路灯物联网管理平台及应用

资产维护 路灯物联网涉及的设备数量大,种类多,生产厂家和批次多样化,对路灯物联网的资产维护是一项艰巨的工作。资产维护管理能够有效的管理路灯资产及各类传感设备资产信息,实现精细化管理。平台提供了对集中控制器、各感测设备节点控制器等设备的信息进行管理,包括录入…...

基于OpenCV的图形分析辨认02

目录 一、前言 二、实验目的 三、实验内容 四、实验过程 一、前言 编程语言&#xff1a;Python&#xff0c;编程软件&#xff1a;vscode或pycharm&#xff0c;必备的第三方库&#xff1a;OpenCV&#xff0c;numpy&#xff0c;matplotlib&#xff0c;os等等。 关于OpenCV&…...

python基础——基础语法

文章目录 一、基础知识1、字面量2、常用值类型3、注释4、输入输出5、数据类型转换6、其他 二、字符串拓展1、字符串定义2、字符串拼接3、字符串格式化4、格式化精度控制 三、条件/循环语句1、if2、while3、for循环 四、函数1、函数定义2、函数说明文档3、global关键字 五、数据…...

vue3 vue-i18n 多语言

1. 安装 npm install vue-i18n -s 2. 引入main.js import { createI18n } from vue-i18n import messages from ./i18n/index const i18n createI18n({legacy: false,locale: Cookies.get(language) || en_us, // set localefallbackLocale: en_us, // set fallback local…...

二级水平导航菜单栏的实现

1. 这个是本人设计的一带一路的二级水平导航栏HTML代码&#xff1b; 这里最后实现的效果是鼠标悬停在导航栏上面&#xff0c;就会显示下面的4个部分页面&#xff0c;这里只是以评论热 点作为例子&#xff0c;其他的类似&#xff1b; 2.首先要设计DIV&#xff0c;然后利用无…...

在GitLab Python库中,mr.changes()和mr.diffs()的区别

在GitLab Python库中&#xff0c;mr.changes()和mr.diffs()都用于获取合并请求&#xff08;Merge Request&#xff09;中的文件更改信息&#xff0c;但它们之间有一些区别&#xff1a; mr.changes()&#xff1a; mr.changes() 方法返回合并请求中所有文件的更改信息。返回的结果…...

JavaScript | 【讨论】微软早在2022年已经停用ie的今天,js开发还需要考虑ie9以下的情况嘛?

CSDN的C知道机器回复&#xff1a; 在进行JavaScript开发时&#xff0c;通常需要考虑IE9以下的况。尽管IE9以下的浏览器在市场份额上逐渐减少&#xff0c;但仍然有一部分用户在使用这些旧版本的浏览器。为了确保网站或应用在这些浏览器上能够正常运行&#xff0c;以下是一些需要…...

网康科技 NS-ASG 应用安全网关 SQL注入漏洞复现(CVE-2024-2022)

0x01 产品简介 网康科技的NS-ASG应用安全网关是一款软硬件一体化的产品,集成了SSL和IPSec,旨在保障业务访问的安全性,适配所有移动终端,提供多种链路均衡和选择技术,支持多种认证方式灵活组合,以及内置短信认证、LDAP令牌、USB KEY等多达13种认证方式。 0x02 漏洞概述 …...

英福康INFICON软件真空Tware32中文操作手册

英福康INFICON软件真空Tware32中文操作手册...

UnityAPI的学习——Quaternion类

Quaternion又称为四元数&#xff0c;由x、y、z和w这4个分量组成&#xff0c;属于struct类型。 在Unity中&#xff0c;用Quaternion来存储和表示对象的旋转角度。 Quaternion类实例属性 在Quaternion类中&#xff0c;涉及的实例属性主要有eulerAngles eulerAngles属性&#x…...

chromedriverUnable to obtain driver for chrome using ,selenium找不到chromedriver

1、下载chromedriver chromedriver下载网址&#xff1a;CNPM Binaries Mirror 老版本在&#xff1a;chromedriver/ 较新版本在&#xff1a;chrome-for-testing/ 2、设置了环境变量还是找不到chromedriverUnable to obtain driver for chrome using NoSuchDriverException:…...

剑指offer面试算法题目,自己总结的

JZ31 栈的压入、弹出序列-C++-CSDN博客 剑指 Offer(C++版本)系列:从尾到头打印单链表(C++)-CSDN博客 剑指offer》15--二进制中1的个数[C++]-CSDN博客 《剑指offer》14--剪绳子(整数拆分)[C++]-CSDN博客 剑指 Offer 12. 矩阵中的路径-CSDN博客 C++--机器人的运动范围…...

原生IP是什么?如何测试代理是不是原生IP?

一、什么是原生IP 原生IP地址是互联网服务提供商&#xff08;ISP&#xff09;直接分配给用户的真实IP地址&#xff0c;无需代理或转发。这类IP的注册国家与IP所在服务器的注册地相符。这种IP地址直接与用户的设备或网络关联&#xff0c;不会被任何中间服务器或代理转发或隐藏。…...

1、MQ_介绍、优缺点、类型等

MQ介绍 1. MQ概述 MQ&#xff08;Message Queue&#xff09;&#xff1a;消息队列&#xff0c;是基础数据结构中FIFO&#xff08;first in first out&#xff09;的一种数据结构。一般用来解决流量削峰、应用解耦、异步处理等问题&#xff0c;实现高性能&#xff0c;高可用&a…...

Go-gin-example 第三部分 编写一个简单的文件日志系统

文章目录 本文目标新建logging包file.go编写log文件当前目录结构 接入自定义的log功能验证功能 本文目标 在上一节中&#xff0c;我们解决了 API’s 可以任意访问的问题&#xff0c;那么我们现在还有一个问题&#xff0c;就是我们的日志&#xff0c;都是输出到控制台上的&…...

SQL中如何添加数据

SQL中如何添加数据 一、SQL中如何添加数据&#xff08;方法汇总&#xff09;二、SQL中如何添加数据&#xff08;方法详细解说&#xff09;1. 使用SQL脚本&#xff08;推荐&#xff09;1.1 在表中插入1.1.1 **第一种形式**1.1.2 **第二种形式**SQL INSERT INTO 语法示例SQL INSE…...

如何更好的理解设计模式之桥接模式

桥接模式 点奶茶的时候, 我们一般选择原味奶茶/牛奶奶茶/咸味奶茶 现在假设我们也有这些已经实现好的奶茶类, 且这个奶茶类仅仅就是一个类, 什么也没有, 不可改动 类似 class 奶茶{ }class 原味奶茶 extends 奶茶{ }但是奶茶也分大杯奶茶, 中杯奶茶, 小杯奶茶, 如果我们要实现…...

Phi-4-mini-reasoning在ollama中启用flash attention:推理速度提升实测报告

Phi-4-mini-reasoning在ollama中启用flash attention&#xff1a;推理速度提升实测报告 你是否遇到过这样的场景&#xff1a;部署了一个轻量级推理模型&#xff0c;满怀期待地输入问题&#xff0c;结果等待了十几秒才得到回复&#xff1f;对于需要快速响应的应用&#xff0c;比…...

Spring Boot项目实战:手把手教你配置Google Play订阅与Pub/Sub回调(含完整代码)

Spring Boot实战&#xff1a;构建高可靠Google Play订阅与Pub/Sub回调系统 在移动应用商业化路径中&#xff0c;应用内订阅已成为数字服务持续变现的核心模式。根据Statista数据&#xff0c;2023年全球应用订阅收入达到380亿美元&#xff0c;其中Google Play贡献了超过34%的份额…...

【花雕学AI】打破AI轻量化极限!MimiClaw:5美元芯片上跑的纯 C 轻量 AI 智能体

提到AI智能体&#xff0c;很多人的第一印象是“需要高性能服务器支撑”“离不开复杂操作系统”“功耗高到不敢长时间运行”——但MimiClaw的出现&#xff0c;彻底打破了这种固有认知。作为全球首个能在仅售5美元的ESP32-S3芯片上流畅运行的纯C编写轻量AI智能体&#xff0c;Mimi…...

试盘Z之主力操盘线

试盘K&#xff0c;以满足特定条件后对该K线标注为试盘字样方便查看。同时通达对9日最低值与9日最高值进行EMA移动平均&#xff0c;得出主力操盘线&#xff01;试盘Z源码:X_1:REF(EMA((HLC)/3,9),1);X_2:EMA(HHV(HIGH,9),3);X_3:EMA(LLV(LOW,9),3);主力操盘线:EMA(X_1*2-X_3,5),…...

如何高效下载B站视频:BilibiliDown终极指南与完整教程

如何高效下载B站视频&#xff1a;BilibiliDown终极指南与完整教程 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/b…...

【稀缺预警】Python 3.14 JIT编译器深度剖析:3类隐性CPU浪费模式+2套自动降本脚本(附真实AWS账单对比图)

第一章&#xff1a;Python 3.14 JIT编译器的演进逻辑与成本敏感性定位Python 3.14 并非官方发布的正式版本&#xff08;截至2024年&#xff0c;CPython最新稳定版为3.12&#xff0c;3.13处于预发布阶段&#xff09;&#xff0c;但本章以假设性技术前瞻视角&#xff0c;探讨若Py…...

WindowsCleaner终极指南:5分钟解决C盘爆红的开源磁盘清理工具

WindowsCleaner终极指南&#xff1a;5分钟解决C盘爆红的开源磁盘清理工具 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否也经常被Windows系统弹出的"…...

工业能量:04.选型小Tips:预算2000元玩转工厂电源

04.选型小Tips:预算2000元玩转工厂电源(新手也能选对不踩坑,PLC机器人稳稳的)** 在工厂里,最昂贵的不是设备,而是“停机一秒的代价”。 哎,师傅们,槐树底下风儿吹得正凉快,今天咱不拆原理、不讲高端配置,就聊最接地气的——2000块钱怎么给车间PLC和机器人挑个靠谱心脏…...

DAMOYOLO-S基础教程:理解count字段与实际业务中目标计数逻辑映射

DAMOYOLO-S基础教程&#xff1a;理解count字段与实际业务中目标计数逻辑映射 1. 从一次“数数”的困惑说起 前两天&#xff0c;一个做零售分析的朋友找我帮忙。他兴奋地告诉我&#xff0c;他们用上了最新的AI目标检测模型&#xff0c;想自动统计货架上的商品数量。他上传了一…...

FastAPI状态管理:FastAPI 全局状态管理的 3 种最佳实践

更多内容请见: 《Python Web项目集锦》 - 专栏介绍和目录 在构建生产级FastAPI应用时,全局状态管理是确保资源高效利用和系统稳定性的关键。不当的状态管理可能导致资源泄漏、线程安全问题和不可预测的行为。本文将深入分析FastAPI中实现全局状态的三种最佳实践,揭示其底层机…...