首页 > 系统相关 >04-Nginx进程模型解析

04-Nginx进程模型解析

时间:2022-09-06 18:24:38浏览次数:85  
标签:BIO 请求 04 worker Nginx 进程 解析 客户端

Nginx进程模型解析

  • master进程: 主进程
  • worker进程: 工作进程

默认是一个主进程, 一个工作进程, Nginx的工作进程是可以通过配置文件进行修改的

# 工作进程数量
worker_processes  1;

修改nginx.conf配置, 修改为2

记得每次修改完成配置文件都进行检查一下, 避免发生错误

检查完成没有问题, 就可以重启Nginx了, 修改完成Nginx必须重启, 不然配置无法生效

重启完成后,再次查看, 工作进程变成了2个

执行过程

客户端发送请求到Master, 然后通过master进行请求分发, 到不同的worker, 然后通过worker与client进行交互

Worker抢占机制

worker在与client交互的过程中, 会需要进行锁的抢占, 谁争取到了,就进行处理, 没有争取到的进入等待

传统服务器事件处理

在传统的事件服务器中, 一个工作进程只能在同一时间处理一个客户端的请求, 一旦发生阻塞, 那么就需要开启新的进程处理新的请求, 这是典型的BIO同步阻塞模型, 缺点也非常明显, 在有大量请求过来的时候, 一旦发生阻塞, 就会开启大量的线程,造成资源的浪费和CPU标高问题, 这也是BIO的典型问题

Nginx事件处理

在Nginx的事件处理中, 一个工作进程可以在同一时间处理多个客户端的请求, 一个客户端请求发生阻塞, 并不会影响到该进程处理其他的请求, 这就是为了解决BIO的问题, 所产生的NIO同步非阻塞模型, 解决了BIO模型的痛点, 那就是一个工作进程只能处理, 一个客户端请求的问题, 在Linux上采用epoll也就是多路复用技术, 很明显的提高了性能和请求的并发量

那么如何配置这个客户端的最大连接数呢

events {
    # 默认使用 use epoll
    use epoll;
    # 每个worker允许的客户端最大连接数, 默认为1024, 可以修改
    worker_connections  1024;
}

没错, 记得修改完之后重启一下nginx

标签:BIO,请求,04,worker,Nginx,进程,解析,客户端
From: https://www.cnblogs.com/flower-dance/p/16662860.html

相关文章

  • 06-Nginx常用命令汇总
    Nginx常用命令解析命令作用./nginx启动./nginx-sstop停止(不推荐),直接停止./nginx-squit退出(推荐),不再接收新的请求,处理完当......
  • 07-Nginx日志切割-通过sh脚本手动切割日志
    Nginx日志切割现有的日志都会存在access.log文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把文件切割为多份不同......
  • 08-Nginx日志切割-脚本+定时任务自动切割日志
    定时任务执行脚本,解决手动问题安装依赖yuminstallcrontabs添加定时任务crontab-e输入内容*/1****/usr/local/nginx/sbin/cut_my_log.sh修改完成后......
  • 01-Nginx领域概念
    什么是NginxNginx是一个高可用的HTTP和反向代理Web服务器,同时也提供IMAP/POP3/SMTP服务主要功能反向代理通过配置文件可以实现集群和负载均衡静态资源虚拟化常见......
  • 解决 发现无法解析的 XXX 的不同版本之间存在冲突
    以下只针对.net6.0项目:.netcore应该也是一样的。framework项目不做讨论。  例如我的情况:引用的依赖BouncyCastle1.9但是VS本地说要用1.8.9,导致冲突,然后VS给......
  • Linux centos7 安装nginx
    安装前准备安装GCC编译环境yuminstall-ygccgcc-c++autoconfautomakemake安装模块依赖Nginx支持的功能模块需要有第三方的库支持,例如gzip的zlib库,rewrite重写需......
  • day59 django 单表操作及域名反向解析
    昨日内容回顾orm单表操作增删改查增加models.Student(name='yuhong',age=23).save()​models.Student.objects.create(name='yuhong',age=23)​obj_list=[]foriin......
  • ubuntu 22.04 安装gcc-7、g++-7
    ubuntu22.04安装gcc-7、g++-71、安装gcc-71.1添加镜像(base)root@FIB:~#vim/etc/apt/sources.list(base)root@FIB:~#tail-1/etc/apt/sources.listdeb[arch......
  • Java开发学习(三十)----Maven聚合和继承解析
    一、聚合分模块开发后,需要将这四个项目都安装到本地仓库,目前我们只能通过项目Maven面板的install来安装,并且需要安装四个,如果我们的项目足够多,那么一个个安装起来还是......
  • Python源码解析-dict的底层实现(PyDictObject)
    目录简介PyDictObject对象类型创建dict缓存池本文基于Python3.10.4。简介元素与元素之间通常可能会存在某种联系,这个联系将两个元素关联在一起。为了刻画这种关联关系,编......