nginx是一个多进程/多线程高性能web服务器在linux系统中,nginx启动后会以后台守护进程(daemon)的方式去运行,后台进程包含一个master进程和多个worker进程(这个数量可以在nginx.conf配置文件中worker_processes这个参数设置),可以充分利用多核架构。nginx工作模式是以多进程的方式来工作的,当然nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是nginx的默认方式。nginx在启动之后会有一个master进程和多个worker进程(默认是一个),多个worker子进程将监听同一个端口,并行处理请求。

master主进程主要用来管理worker进程,主要作用是:读取并验正配置信息,管理真正提供服务的worker进程,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。master进程不会对用户请求提供服务,而用户的请求则是worker进程来响应的。

nginx是通过信号来控制,比如关闭,重启等去控制nginx进程。nginx信号是属于nginx进程间的通信的一种机制,比如master主进程控制多个worker子进程,也是通过信号控制的,如下图。

worker 进程数应该设置为等于 CPU 的核数,高流量并发场合也可以考虑将进程数提高至 CPU 核数 * 2。

[root@localhost oa_workflow_test]# ps aux | grep nginx
root 0.0 0.0 ? Ss 6月01 : nginx: master process /usr/local/nginx/sbin/nginx
www 0.0 0.1 ? S 6月01 : nginx: worker process
nginx 0.0 0.3 ? S 6月01 : php-fpm: pool www
nginx 0.0 0.3 ? S 6月01 : php-fpm: pool www
root 0.0 0.0 pts/ R+ : : grep --color=auto nginx
[root@localhost oa_workflow_test]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost oa_workflow_test]# ps aux | grep nginx
root 0.0 0.1 ? Ss 6月01 : nginx: master process /usr/local/nginx/sbin/nginx
www 0.0 0.1 ? R 6月01 : nginx: worker process is shutting down
nginx 0.0 0.3 ? S 6月01 : php-fpm: pool www
nginx 0.0 0.3 ? S 6月01 : php-fpm: pool www
www 36.0 0.0 ? R : : [nginx]
www 60.6 0.1 ? R : : nginx: master process /usr/local/nginx/sbin/nginx
www 34.0 0.1 ? S : : nginx: worker process
www 67.6 0.1 ? S : : nginx: worker process
www 36.3 0.1 ? R : : nginx: master process /usr/local/nginx/sbin/nginx
root 49.0 0.0 pts/ S+ : : grep --color=auto nginx

Nginx支持以下几种信号选项:

  • TERM,INT:       快速关闭                              
  • QUIT :从容关闭(优雅的关闭进程,即等请求结束后再关闭)
  • HUP :平滑重启,重新加载配置文件 (平滑重启,修改配置文件之后不用重启服务器。直接kill -PUT 进程号即可)
  • USR1 :重新读取日志文件,在切割日志时用途较大(停止写入老日志文件,打开新日志文件,之所以这样是因为老日志文件就算修改的文件名,由于inode的原因,nginx还会一直往老的日志文件写入数据)
  • USR2 :平滑升级可执行程序  ,nginx升级时候用                               
  • WINCH :从容关闭工作进程

  

Nginx信号控制语法:

      kill -信号选项 nginx的主进程号

   例如:从容关闭nginx服务

kill -QUIT nginx主进程号

【nginx】nginx的工作模式和信号量控制的更多相关文章

  1. nginx入门(安装,启动,关闭,信号量控制)

    公司使用到了nginx,于是周末初步接触了一下nginx,立即被其简洁,优雅,高效的特性给迷住了.nginx是在是个好东西,配置极其简单,容易理解,极其高效,稍微一调优,ab测试10k并发,很轻松.比 ...

  2. Nginx与Apache工作方式

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://going.blog.51cto.com/7876557/1304204 Ngin ...

  3. LVS、Nginx 及 HAProxy 工作原理

    当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器 ...

  4. Nginx 反向代理工作原理简介与配置详解

    Nginx反向代理工作原理简介与配置详解   by:授客  QQ:1033553122   测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...

  5. centos LNMP第一部分环境搭建 LAMP LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/php/{p.conf.default,p.conf} php运行方式SAPI介绍 第二十三节课

    centos  LNMP第一部分环境搭建 LAMP安装先后顺序  LNMP安装先后顺序 php安装 安装nginx  编写nginx启动脚本   懒汉模式  mv   /usr/local/php/{ ...

  6. Nginx、Apache工作原理及Nginx为何比Apache高效

    Nginx才短短几年,就拿下了web服务器大笔江山,众所周知,Nginx在处理大并发静态请求方面,效率明显高于httpd,甚至能轻松解决C10K问题. 在高并发连接的情况下,Nginx是Apache服 ...

  7. 一文详解 LVS、Nginx 及 HAProxy 工作原理( 附大图 )

    当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器 ...

  8. 使得nginx支持pathinfo访问模式

    原理:     任意创建一个 in.php 文件:             <?php                       echo '<pre>';             ...

  9. http 工作模式与模块

    目录 http 工作模式与模块 http 服务器应用 MPM工作模式 prefork worker event 进程角色 httpd功能特性 http 安装 centos6配置目录 http 2.2 ...

随机推荐

  1. BGP: 容易实现路由备份,不容易实现等价负载均衡。

    一.结论: 1.BGP只能建立备份路由,不能建立等价路由. 2.BGP按照下面的规则进行优选路由. BGP选择路由的策略 当到达同一目的地存在多条路由时,BGP依次对比下列属性来选择路由: 优选协议首 ...

  2. (最完美)小米平板3的USB调试模式在哪里开启的流程

    经常我们使用安卓手机链上电脑的时候,或者使用的有些应用软件比如我们公司营销小组经常使用的应用软件引号精灵,之前的老版本就需要开启usb调试模式下使用,现经常新版本不需要了,如果手机没有开启usb调试模 ...

  3. Spark之Yarn提交模式

    一.Client模式 提交命令: ./spark-submit --master yarn --class org.apache.examples.SparkPi ../lib/spark-examp ...

  4. django源码分析 python manage.py runserver

    django是一个快速开发web应用的框架, 笔者也在django框架上开发不少web应用,闲来无事,就想探究一下django底层到底是如何实现的,本文记录了笔者对django源码的分析过程 I be ...

  5. MS SQL自定义函数IsPositiveInteger

    判断字符串是否为正整数,0开始的的数字不算. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[svf_I ...

  6. AngularJS学习之旅—AngularJS Scope作用域(五)

    1.AngularJS Scope(作用域) Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带. Scope 是一个对象,有可用的方法和属性. Sco ...

  7. Golang 学习权威网站

    Golang 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Golang 是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发 ...

  8. Cmder--Windows下代替原生的cmd命令行工具

    Cmder是Windows下的命令行工具,用来代替Windows自带的cmd 官网:http://cmder.net/ 这里下载Full版本 https://github.com/cmderdev/c ...

  9. SQLServer数据库差异备份

    差异备份 (differential backup)定义 一种数据备份,基于完整数据库或部分数据库或一组数据文件或文件组(差异基准)的最新完整备份,并且仅包含自确定差异基准以来发生更改的数据. 使用S ...

  10. centos7下kubernetes(14。kubernetes-DNS访问service)

    我们在部署kubernetes时,会自动部署dns组件,其作用是通过dns解析的方法访问service coredns是一个DNS服务器,每当有新的service被创建,kube-dns会添加该ser ...