nginx(八十五)nginx的启动流程

这篇具有很好参考价值的文章主要介绍了nginx(八十五)nginx的启动流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一   如何控制nginx

①  基础知识

nginx(八十五)nginx的启动流程,nginx,master,worker,init

kill -l信号列表   信号列表

②  控制nginx

场景1: 不'断连',优雅'reload'加载'新'的配置文件  

涉及: 'nginx -s reload'、'kill -HUP $master_pid '、'kill -1 $master_pid'

场景2: 日志'切割'

涉及: 'nginx -s reopen'、'kill -USR1 $master_pid'、'kill -10 $master_pid'

场景3: 动态更新'nginx可执行'文件

核心'涉及': 'USR2'、'12'
​
强调: 不管是'哪种'方式,'本质'还是操作'主进程id'

nginx(八十五)nginx的启动流程,nginx,master,worker,init

nginx(八十五)nginx的启动流程,nginx,master,worker,init

nginx热更新涉及的信号量

+++++++++++++ "HUP、reload细讲" +++++++++++++

思考1: reload不'生效'场景?    --> 也即'必须restart'  --> 涉及'哪些'指令?

思考2: reload之前的'缓存'是否会失效?

reload流程

nginx(八十五)nginx的启动流程,nginx,master,worker,init

细节点:

  [1]、在启动新的worker子进程以后,master进程会向'老的'worker子进程发送'QUIT'信号;

  备注: QUIT信号是'优雅'的关闭子进程

  [2]、nginx保证'平滑'升级,如何做到'不断连'

  备注:所以它一定要'先启动新'的worker子进程,再向'老的worker'子进程发送'QUIT'信号;

nginx(八十五)nginx的启动流程,nginx,master,worker,init

1) 现象1:nginx的'worker进程的数量'变多了  --> '暂时'

2) 现象2:reload'不释放',内存'溢出'       --> '原因'和'解决策略'

 原因:

  [1]、'异常'的情况下,比如说一些请求出问题了,客户端'长时间'没有处理

  [2]、就会导致这个请求'长时间占用'在这个worker子进程上面,而这个worker子进程会'一直'存在

  现象: 存在大量的'worker process is shutting down'

  影响: 只会影响'已经存在的连接'而不会影响新的连接

 解决策略: worker_shutdown_timeout 表示最长会'等待多长'时间退出

 工作机制: 

  [1]、master进程在启用'新的worker子进程'以后,它会加一个定时器worker_shutdown_timeout

  [2]、定时器到期了以后,如果'旧worker子进程'还没有退出,就会强制把旧worker子进程给'退出'

nginx: worker process is shutting down 资源不释放

nginx(八十五)nginx的启动流程,nginx,master,worker,init

nginx 代理 'websocket 协议'或'tcp层或者udp层'反向代理的时候,无法优雅地关闭'worker'进程

reload的热部署和日志切割 

nginx(八十五)nginx的启动流程,nginx,master,worker,init

nginx(八十五)nginx的启动流程,nginx,master,worker,init

nginx(八十五)nginx的启动流程,nginx,master,worker,init

+++++++++ "热更新失败后如何回退" +++++++++

nginx(八十五)nginx的启动流程,nginx,master,worker,init

从压测碰到的诡异断连问题聊聊nginx的连接管理 

③  nginx命令行参数

nginx(八十五)nginx的启动流程,nginx,master,worker,init

二   nginx的启动流程

①  学习目的

目的1: 深入理解'openresty'的master和worker和进程的'初始化'

1)init_by_lua        init_by_lua_block       init_by_lua_file -->'master初始化'

2)init_worker_by_lua init_worker_by_lua_block  init_worker_by_lua_file 

目的2: 掌握'reload|restart|start' 对'master、worker'进程'init初始化'和'缓存的'影响

②  nginx启动退出时的回调方法

nginx(八十五)nginx的启动流程,nginx,master,worker,init文章来源地址https://www.toymoban.com/news/detail-724864.html

1) init_module  --> 一定是'解析完'nginx.conf配置文件,在'master进程中'调用

2) init_process --> init_by_worker_xxx指令,就是'在worker进程'中调用

常见:取'进程id'有'不同'的结果

重点:可以'深入的理解'openresty的'上述'指令

到了这里,关于nginx(八十五)nginx的启动流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库管理-第八十五期 19c OCM之路-准备与环境篇(20230626)

    从去年就有消息传出,OCM将从12c升级到19c,今年12c OCM停考,从业内大佬和OU处了解到其实今年3月30日已经开考19c OCM了,但是时至今日Oracle官网上依然没有更新19c OCM的相关信息: 然而前两天还在使用搜索引擎再次查找相关信息的时候,偶然间发现,19c OCM的相关信息已经悄然有

    2024年02月11日
    浏览(53)
  • XUbuntu22.04之解决蓝牙鼠标不停掉线问题(追凶过程)(一百八十五)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:An

    2024年02月16日
    浏览(76)
  • kubernetes(K8S)学习(一):K8S集群搭建(1 master 2 worker)

    kubernetes官网 :https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl GitHub :https://github.com/kubernetes/kubeadm 本文 :使用kubeadm搭建一个3台机器组成的k8s集群,1台master节点,2台worker节点。 由于k8s安装较麻烦,为防止出现其他异常,特此

    2024年04月09日
    浏览(68)
  • OSG三维渲染引擎编程学习之八十五:“第八章:OSG文字” 之 “8.4 文字特效实例”

    目录 第八章 OSG文字 8.4 文字特效实例       适当的文字信息对于显示场景信息是非常重要的。在OSG中,osgText提供了向场景中添加文字的强大功能,由于有第三方插件FreeType的支撑,可完全支持TrueType字体。       TrueType是由AppleComputer公司和Microsoft公司联合提出的一种新型数

    2024年02月11日
    浏览(43)
  • 解决Worker 1 failed executing transaction ‘ANONYMOUS‘ at master log mall-mysql-bin.000001, end_log_pos

    在Docker中配置MySQL主从服务器时遇到的问题。 如下错误解决: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction ‘ANONYMOUS’ at master log mall-mysql-bin.000001, end_log_pos 2251. See error log and/or performance_schema.replication_applier_status_by_wo

    2023年04月12日
    浏览(77)
  • spark启动HA时workers为0,且为standby状态

    今天学习一个spark视频,在启动StandAloneHa模式的时候,发现workers为0,而且spark两个master的状态都为standby,找了很久,才知道我用的spark3.2 最低支撑的zookeeper版本为3.5.x,而且zookeeper的安装包是需要带bin的那个包,例如apache-zookeeper-3.6.3-bin.tar.gz 这是zookeeper下载的地址:zookeeper下

    2024年02月16日
    浏览(25)
  • 微软用它取代了`Nginx`吞吐量提升了百分之八十!

    Azure应用服务用YARP取代了Nginx,获得了80%以上的吞吐量。他们每天处理160B多个请求(1.9 m RPS)。这是微软的一项了不起的技术创新。 首先我们来介绍一下什么是Yarp YARP(Yet Another Reverse Proxy)是一个开源的、高性能的反向代理库,由Microsoft开发,使用C#语言编写。它旨在作为.NE

    2024年02月02日
    浏览(46)
  • nginx(八十三)error_page、proxy_intercept_errors深究

    一   error_page和proxy_intercept_errors深究 ①  知识铺垫 proxy模块上游出现失败时的容错方案 proxy_intercept_errors指令应用 try_files、internal、error_page指令 上游服务器出问题了,nginx 还能获取到响应吗? error_page案例 ②  问题引入 ③  error_page                         ④  error_page深入

    2024年02月08日
    浏览(42)
  • 微软用它取代了 Nginx 性能提升了百分之八十!这也也太牛逼了吧

    戳下方名片,关注并 星标 ! 回复“ 1024 ”获取 2TB 学习资源! 大家好,我是民工哥! 提到反向代理软件,大家肯定第一时间想到是:Nginx,没错,Nginx确实是一款非常优秀的反向代理软件,很多大厂都在使用,比如:微软。 不过,目前微软用它取代了 Nginx ,使得吞吐量提升

    2024年01月16日
    浏览(43)
  • 【水文】calico-node 启动失败 Init:CrashLoopBackOff

    查看日志报错如下  Defaulted container \\\"calico-node\\\" out of: calico-node, upgrade-ipam (init), install-cni (init), mount-bpffs (init) Error from server (BadRequest): container \\\"calico-node\\\" in pod \\\"calico-node-4j7td\\\" is waiting to start: PodInitializing 结果:kube-proxy没启动,每个人的环境不同,需要具体排查看日志。下面是分

    2024年02月11日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包