首页
学习
活动
专区
圈层
工具
发布

如何优雅地关闭worker进程?

之前我们讲解 Nginx 命令行的时候,可以看到 Nginx 停止有两种方式,分别是 nginx -s quit 和 nginx -s stop,其中 stop 是指立即停止 Nginx,而 quit...首先第一步会设置一个定时器,在 nginx.conf 中可以配置一个 worker_shutdown_timeout,配置完 worker_shutdown_timeout 之后,会加一个标志位,表示进入优雅关闭流程了...当设置了 worker_shutdown_timeout 的时候,即使请求还没处理完,当时间到了之后这些请求都会被强制关闭,也就是说优雅地关闭只完成了一半,有一部分连接是立即停止的。...因此在以下两个条件:当所有循环中连接被优雅地关闭,或者达到了 worker_shutdown_timeout 时间定时器以后,worker 进程都会立即退出。...;或者说如果出现了错误、有些模块或者有些客户端不能正常的处理请求时,Nginx 需要有一些例外的措施,比如 worker_shutdown_timeout 来保证 Nginx 老的 worker 进程可以正常的退出掉

2.9K10

nginx这些原理你都懂了吗?

# 重建指定nginx work进程ID的进程 对于nginx的master进程来说可以接收到的信号: 以下四个信号是可以通过nginx命令与参数实现的 TERM,INT 表示立刻停止nginx进程...QUIT 表示优雅的停止nginx进程,就是慢慢的停止nginx进程,不要对用户发送立刻结束连接,像tcp的reset复位请求这样的报文 HUP 表示重载配置文件 USR1表示重新打开日志文件 以下两个信号专门用于进行...2. nginx在重载配置文件究竟做了什么?...将旧nginx文件换成新的nginx文件(注意备份) 2....设置定时器 `worker_shutdown_timeout`,然后给进程设置一个优雅关闭的标志位 2. 关闭监听句柄不在接收新的连接 3. 关闭空闲连接 4. 在循环中等待全部连接关闭 5.

73530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Nginx高并发调优中常被忽略的参数

    在nginx或php-fpm优化的时候,经常会碰到一个参数:backlog backlog是什么? 在nginx官方文档中定义如下: ? 在php-fpm中解释如下: ?...从上面的解释来看,就是定义了一个队列,并设置了队列长度,那么这个队列是做什么的,接着往下看 不管是nginx还是php-fpm中backlog配置的地方都是在listen指令的位置,为什么是在listen...在syncookies启用的情况下,逻辑上没有最大值限制,这个设置被忽略,syncookies通常被开启,用于防止SYN Flood攻击 简单说一下syncookies,syncookies设计就是用来防止...下图是nginx源码中对backlog的定义 ? 接着修改内核参数somaxconn为1024,再通过ss查看 ? 查看nginx对应的Send-Q ?...从上面的结果来看确实是根据最小值来决定backlog的,所以你之前配置的内核参数,对于nginx来说,默认情况下,不管你设置多大,这个队列都是511,并没有达到优化的效果 那么对于nginx,对于php-fpm

    5.2K31

    Nginx - 深入理解nginx的处理请求、进程关系和配置文件重载

    |-nginx,193 | |-nginx,246,nobody | |-nginx,247,nobody | |-nginx,248,nobody | |-nginx,249...Nginx内部看Nginx是怎样处理请求的。...对于每一个处理完成的请求会记录到Access访问日记和错误日志里,更多的时候Nginx作为反向代理服务器使用的,可以使用协议传输到后面的服务器,也可以通过应用层的协议,代理到响应的应用服务器配置文件重载的原理真相想了解配置文件重载的原理真相...http请求信息Error.log错误日志,定位问题reload配置文件重载流程图片Nginx配置文件重载如图所示,大致可分三步:1.更新nginx.conf配置文件,向Master发送SIGHUP信号...注意,在新老配置进程交替过程中,新老进程是同时存在的,如果是异常的请求出了问题,客户端长时间没有处理,会导致请求长时间占用在内存中,worker进程就会一直存在,解决这个问题的办法设置,可以设置worker_shutdown_timeout

    89532

    探究 Nginx 中 reload 流程的真相

    今天这篇文章主要来介绍下 Nginx 的 reload 流程。...实际上在之前文章中,在更改了 nginx 配置文件时,我们都会执行 nginx -s reload 命令,我们执行这条命令的原因是希望 nginx 不停止服务始终在处理新的请求的同时把 nginx 的配置文件平滑的把旧的...nginx.conf 配置更新为新的 nginx.conf 配置。...第一步在修改好 nginx 的配置文件 nginx.conf 后,向 master 进程发送 HUP 信号,这实际上和我们在命令行执行 nginx -s reload 命令效果是一样的。...在新版本中提供了一个新的配置 worker_shutdown_timeout,也就是说最长等待多长时间,这样 master 进程启动新的黄色 worker 进程之后,如果老的 worker 进程一直没有退出

    3.3K20

    探究 Nginx 中 reload 流程的真相

    实际上在之前文章中,在更改了 nginx 配置文件时,我们都会执行 nginx -s reload 命令,我们执行这条命令的原因是希望 nginx 不停止服务始终在处理新的请求的同时把 nginx 的配置文件平滑的把旧的...nginx.conf 配置更新为新的 nginx.conf 配置。...那么下面我们通过分析 nginx 的 reload 流程,来探究下 nginx 到底做了些什么?所谓优雅的退出和立即退出有什么区别?...reload 流程 第一步在修改好 nginx 的配置文件 nginx.conf 后,向 master 进程发送 HUP 信号,这实际上和我们在命令行执行 nginx -s reload 命令效果是一样的...在新版本中提供了一个新的配置 worker_shutdown_timeout,也就是说最长等待多长时间,这样 master 进程启动新的黄色 worker 进程之后,如果老的 worker 进程一直没有退出

    2.6K10

    浅析 Nginx 网络事件

    Nginx 是一个事件驱动的框架,所谓事件主要指的是网络事件,Nginx 每个网络连接会对应两个网络事件,一个读事件一个写事件。...以上就是一个事件分发、消费器,包括 AIO 像异步读写磁盘事件,还有定时器事件,比如是否超时(worker_shutdown_timeout)。...Nginx 网络事件实例 上面介绍了网络报文的发送以及对应的 Nginx 中的网络事件,比如 Accept 建立一条新连接其实是收到一条读事件,接下来我们通过抓包来分析建立三次握手时时怎么样让 Nginx...三次握手也就是 windows 先向 Nginx 发送了一次 [SYN],那么相反的 Nginx 所在的服务器也会向 windows 发送一个 [SYN],这个时候 Nginx 是没有感知到的,因为这个连接还是处于半打开的状态...直到这台 windows 服务器再次发送 [ACK] 到 Nginx 所在的服务器之上时,Nginx 所在的操作系统才会去通知 Nginx 我们收到了一个读事件,这个读事件对应是建立一个新连接,所以此时

    80720

    浅析 Nginx 网络事件

    优质文章,及时送达 Nginx 是一个事件驱动的框架,所谓事件主要指的是网络事件,Nginx 每个网络连接会对应两个网络事件,一个读事件一个写事件。...以上就是一个事件分发、消费器,包括 AIO 像异步读写磁盘事件,还有定时器事件,比如是否超时(worker_shutdown_timeout)。...Nginx 网络事件实例 上面介绍了网络报文的发送以及对应的 Nginx 中的网络事件,比如 Accept 建立一条新连接其实是收到一条读事件,接下来我们通过抓包来分析建立三次握手时时怎么样让 Nginx...三次握手也就是 windows 先向 Nginx 发送了一次 [SYN],那么相反的 Nginx 所在的服务器也会向 windows 发送一个 [SYN],这个时候 Nginx 是没有感知到的,因为这个连接还是处于半打开的状态...直到这台 windows 服务器再次发送 [ACK] 到 Nginx 所在的服务器之上时,Nginx 所在的操作系统才会去通知 Nginx 我们收到了一个读事件,这个读事件对应是建立一个新连接,所以此时

    74020

    浅析 Nginx 网络事件

    Nginx 是一个事件驱动的框架,所谓事件主要指的是网络事件,Nginx 每个网络连接会对应两个网络事件,一个读事件一个写事件。...以上就是一个事件分发、消费器,包括 AIO 像异步读写磁盘事件,还有定时器事件,比如是否超时(worker_shutdown_timeout)。...三次握手也就是 windows 先向 Nginx 发送了一次 [SYN],那么相反的 Nginx 所在的服务器也会向 windows 发送一个 [SYN],这个时候 Nginx 是没有感知到的,因为这个连接还是处于半打开的状态...直到这台 windows 服务器再次发送 [ACK] 到 Nginx 所在的服务器之上时,Nginx 所在的操作系统才会去通知 Nginx 我们收到了一个读事件,这个读事件对应是建立一个新连接,所以此时...这篇文章主要讲解了网络事件,并通过抓包来分析 Nginx 网络事件,这对我们理解 Nginx 异步处理框架是非常有帮助的,包括 OpenResty 也是强依赖于网络事件以及事件分发的。

    38220

    【Nginx02】Nginx学习:核心模块Core

    Nginx学习:核心模块Core 对于 Nginx 的学习来说,其实最基础的就是学习配置文件中的各种不同配置项。...worker_shutdown_timeout time; 最后这个其实从名字就可以看出来了,它是在 shutdown 之后超时的时间。什么意思呢?...用于 Nginx 内部的几个调试点上,自己写 Nginx 插件时比较有用。 最后一个和进程有关,关闭后它会让 Nginx 程序不 fork 子进程,只使用一个进程运行。...这个配置不能通过 reload 重载,需要完全关闭再重启。 错误日志 在核心模块的日志中,其实只有一个 error_log 的配置,相信这个配置大家一定不会陌生。...用于定义每隔多久才会由 gettimeday() 更新一次缓存时钟;在 x86-64 系统上,gettimeday() 代价已经很小,可以忽略此配置。

    48230

    CentOS 7 下Jenkins安装部署教程

    官网:https://jenkins.io/ 2、本篇环境信息 工具/环境 版本 Linux Server CentOS 7 Jenkins 2.121.2 JDK 1.8.0_181 Nginx 1.14.0...(非必要步骤) 参考:https://ken.io/note/centos-quickstart-nginx-setup 部署Nginx是为了方便我们通过域名访问Jenkins,如果无此需求可忽略次操作...lib/jvm/jre-1.7.0/bin/java /usr/bin/java /usr/java/jdk1.8.0_181/bin/java " 4、启动Jenkins并设置Jenkins开机启动 #重载服务...配置(非必要步骤) 1、配置Nginx反向代理Jenkins 新建配置文件 #新增Jenkins专用Nginx配置文件 sudo vi /etc/nginx/conf.d/jenkins.conf #.../html; } } 重载Nginx配置 sudo nginx -s reload 2、配置SELinux 如果不配置SELinux,通过Nginx反向代理访问,可能会产如下错误 #查看错误信息

    10.4K53

    zblogphp上传视频文件超过50M没反应,状态栏显示响应中的解决办法

    第一步: 首页在zbp后台首页找到网站设置,然后点击“后台设置”,设置下上传文件的类型(默认自带mp4格式,可以忽略),在设置下允许上传文件的大小,这里暂时设置200,单位是兆(MB),如图: 第二步...: 设置完程序上传大小还得前往服务器设置,找到nginx或者apache,本教程以nginx为例,找到性能调整,在“client_max_body_size”设置上传最大文件的显示,如图我们设置跟程序一样...,都是200,如图: 设置完成后点击“服务”重载配置即可,服务器环境设置完成,还得设置一下php,限制太多了,哎,没办法啊,找到站点所用的php版本,本站使用7.0,设置找到“配置修改”在“upload_max_filesize...”中设置200,跟之前一样,统一标准,如图: 设置完成后依次点击服务重载配置即可完成,然后我们回到后台重新上传附件,如图: 第三步: 是的,视频还是没有上传成功,而是不在出现413错误提示,变成了,...如果按照如上就解决了我也不会写这么一篇文章,不废话了,还是找到php设置,找到配置文件,把“post_max_size”的默认值50M改成150M,或者200M都行,如图: 如此设置之后就没有问题了,记得点击服务,重载配置

    1.9K20

    重识Nginx - 18 网络收发与Nginx事件间的对应关系

    Nginx每个连接自然对应两个网络事件,即 读事件和写事件。 要想理解Nginx的原理,以及Nginx再各种极端场景下的处理时,就必须要先了解网络事件。...以上就是一个事件分发、消费器,包括 AIO 像异步读写磁盘事件,还有定时器事件,比如是否超时(worker_shutdown_timeout)。...端口,而 Nginx 启动的是 8888 端口。...三次握手也就是 windows 先向 Nginx 发送了一次 [SYN],那么相反的 Nginx 所在的服务器也会向 windows 发送一个 [SYN]....直到这台 windows 服务器再次发送 [ACK] 到 Nginx 所在的服务器之上时,Nginx 所在的操作系统才会去通知 Nginx 我们收到了一个读事件,这个读事件对应是建立一个新连接,所以此时

    71740
    领券