nginx的进程模型可以理解为:多进程+多路复用。

nginx的进程模型

使用linux的ps命令查看当前nginx的进程(ps -ef | grep nginx),可以看到有两个进程,分别是nginx:master和nginx:worker。

两个进程之间的关系可以用如下图来表示:

nginx这样处理的优点有:

  • 当nginx启动后,产生一个master进程,当master执行一系列操作后会产生一个或多个worker进程。
  • 当有请求进来时,master会向worker发信号,然后通过worker进程去处理请求,一个请求对应一个worker。
  • master会监控worker的状态。当worker产生异常时,会启动一个新的woker。
  • 多个worker之间是一种竞争关系。每个worker进程可以产生多路复用。
  • nginx的每个进程都是独立的,相互之间是安全的。一个worker 宕机了,其它work还是继续工作,相互没有影响。

当我们将配置文件中work_processes由1改成2后,重启nginx会发现多了一个work_processes,理论上单机nginx支持的并发数为(work_processes * work_connections)。

worker_processes配置

上面已经介绍了work_processes的配置,但是这个数并不是越大越好,建议配置为1,最大也不要超过8。比你当前CPU核数小就可以了。官方原文建议是:

Nginx unlike Apache and other process per connection webservers. It uses one master process to start and monitor a small number of worker processesthat actually handle the connections. My recommendation is to start with the default number of workers, which is 1.

worker_cpu_affinity配置

这个参数默认是不开启的。所以我们如果要配置,建议首先查看CPU核数(与上面一致)。它是由0和1这样的二进制参数 组成。

以2核CPU开启2进程为例,"01"代表使用第一个CPU内核,“10”代表使用第二个CPU内核。组数代表进程数。

配置示例如下所示:

测试

配置完成后重启nginx,使用ab命令测试,然后使用top命令查看CPU使用情况。

# /usr/local/nginx-1.16.1/sbin/nginx -s reload
# ab -n 30000 -k http://localhost/index.html
# top

查看nginx进程_nginx的进程模型与配置相关推荐

  1. 【学习笔记】启动Nginx、查看nginx进程、查看nginx服务主进程的方式、Nginx服务可接受的信号、nginx帮助命令、Nginx平滑重启、Nginx服务器的升级

     1.启动nginx的方式: cd /usr/local/nginx ls ./nginx -c nginx.conf 2.查看nginx的进程方式: [root@localhost nginx] ...

  2. Shell脚本和Python查看Nginx并发连接数、进程数和常驻内存占用情况

    Shell脚本查看Nginx并发连接数.进程数和常驻内存占用情况 http://xiaoyongxing1.blog.163.com/blog/static/642807522015144302240 ...

  3. php-fpm进程的用户组,PHP中的“进程”系列1——PHP-FPM模型

    PHP中的"进程"系列 这个系列会分几个部分,从PHP-FPM进程模式起,到Linux进程,最后回到PHP本身谈一谈如何设计一个PHP的进程池.整个系列会氛围大致5个主要部分,分别 ...

  4. php-fpm 进程通讯,PHP-FPM进程模型解析

    本文将介绍以下内容: PHP-FPM进程管理方式介绍 PHP-FPM如何与Nginx等Web服务器进行通信 先说一下PHP-FPM的进程模型,PHP-FPM采用的是Master/Worker进程模型. ...

  5. linux centos7杀进程,centos7 nginx 启动/进程状态/杀掉进程

    查看nginx netstat -antp | grep :80(查看80端口被哪个服务占用) or netstat -antpuel | grep ":22" | grep -v ...

  6. 进程锁、事件、进程队列、进程间共享数据、生产者消费者模型

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 进程锁(Lock) 锁的基本概念 锁的基本用法 模拟12306抢票软件 信号量:Semaphone 概念 Semaphore ...

  7. Chrome源码剖析、上--多线程模型、进程通信、进程模型

    Chrome源码剖析.上 原著:duguguiyu. 整理:July. 时间:二零一一年四月二日. 出处:http://blog.csdn.net/v_JULY_v. 说明:此Chrome源码剖析很大 ...

  8. 【chrome】Chrome源码剖析、上--多线程模型、进程通信、进程模型

     Chrome源码剖析.上 原著:duguguiyu. 整理:July. 时间:二零一一年四月二日. 出处:http://blog.csdn.net/v_JULY_v. 说明:此Chrome源码剖析很 ...

  9. Chrome源码剖析——多线程模型、进程通信、进程模型

    说明:本文内容由 v_JULY_v 根据 duguguiyu 的博客整理而成. 前言 1.  之所以整理此文,有两个目的:一是为了供自己学习研究之用:二是为了备份,以作日后反复研究.除此之外,无它. ...

最新文章

  1. Observables简介以及它们与Promise有何不同
  2. 行业软件和鸿蒙,华为鸿蒙负责人王成录:育人才,打造国产软件“根”能力
  3. pip安装包时遇到的Bug
  4. 【机器学习基础】数学推导+纯Python实现机器学习算法22:最大熵模型
  5. Django中models利用ORM对Mysql 进行查表的语句(多个语句)
  6. 我今天对JavaFX的了解
  7. php如何统计数组的个数,如何用php统计数组元素的个数(附代码)
  8. Copy Clone
  9. Vue-在data中引入静态图片路径
  10. 报表软件JS开发引用HTML DOM的windows对象
  11. 编译原理语义分析代码_Pix2Pix原理分析与代码解读
  12. linux crontab每小时运行一次
  13. Ubuntu系统安装及常用软件设置
  14. AI对于人类来说到底是福还是祸?
  15. 2020系统规划与管理师考试通过率探秘
  16. AuNP@SiO2二氧化硅包裹的金纳米粒子|AuNP@Al2O3氧化铝包覆核壳结构金纳米颗粒|齐岳生物
  17. html年会抽奖代码实例,基于JavaScript实现简单抽奖功能代码实例
  18. 丈量你的代码,从cloc开始
  19. 电子版标书怎么做?有哪些特点?
  20. 模拟根据后端返回列表数据,先包装成树结构,包装路由数据格式。

热门文章

  1. Windows监听进程是否退出C++
  2. Python--面向对象学习继承(11.17)
  3. Kickstart文件的编写
  4. Sysdig and Falco now powered by eBPF
  5. VPP 安装配置工具vpp-config
  6. 理解Mysql prepare预处理语句:mysql_stmt_init(MYSQL *mysql);
  7. 概率论笔记:随机数、概率分布(正态分布)、中心极限定理(大数定理)
  8. python多线程实现方法_Python3 多线程的两种实现方式
  9. 单片机modbus rtu通讯_【原创】永宏PLC系列RS485通讯方式
  10. 计算机表格中如何计算数据透视表,在数据透视表中计算值