范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

17Nginx入门教程Nginx的基础架构解析(上)

  1. Nginx 的进程模型
  前面介绍 Nginx 时有介绍过 Nginx 的进程模型。Nginx 启动时首先启动一个 Master 进程,然后由 Master 进程启动一个或者多个 Worker 子进程。Master 进程主要完成配置读取,通过发送信号控制 Worker 进程的启动和停止等,而 Worker 子进程是用来处理客户端发来的 Http 请求,且Worker进程之间会通过共享内存进行通信。 1.1 worker 进程处理请求过程
  假设 Nginx 启动了多个 Worker 进程,并且在 Master 进程中通过 socket 套接字监听80端口。 这些 Worker 进程 fork 自 Master 进程,然后每个worker进程都可以去 accept 这个监听的 socket。 当一个连接进来后,所有在 accept 在这个 socket 上面的进程,都会收到消息,但是只有一个进程可以 accept 这个连接,其它的则 accept 失败,这便是所谓的惊群现象。Nginx 处理这种情况的方式就是加锁。有了锁之后,在同一时刻,就只会有一个 Worker 进程在 accpet 连接,这样就不会有惊群问题了。在 Worker 进程拿到 Http 请求后,就开始按照前面介绍的 11个阶段处理该 Http 请求,最后返回响应结果并断开连接。 1.2 Nginx 命令行的处理流程
  最早我们学习了 Nginx 命令行操作,这些命令行操作都是给 Master 进程发信号,然后再由 Master 进程发送信号给 Worker 进程,从而达到控制 Worker 进程的目标。我们以 Nginx 的热部署命令 ./nginx -s reload   来描述 Nginx 命令行的执行流程。具体过程如下: 首先 Master 进程会检查 nginx.conf 文件是否存在语法错误,并从中找到 nginx.pid 配置路径(没有配置会使用默认值) reload 参数表示向 Master 进程发送 HUP 信号。Nginx 会根据会保存在 nginx.pid 文件中的值找到 Master 进程的 pid。如果 Nginx 进程没有启动,则没有该 nginx.pid 文件,命令行会报错; # 在 Nginx 的配置文件中配置 nginx.pid 的保存路径 [root@server sbin]# ./nginx -s reload nginx: [error] open() "/root/nginx/logs/nginx.pid" failed (2: No such file or directory) Master 进程打开新的监听端口; Master 进程用新配置启动新的 Worker 进程。新的 Worker 进程起来后,开始接收 Http 请求并处理,此时老的 Worker进程会停止接受 Http 请求; Master 进程会向老的 Worker进程发送 QUIT 信号; 老的 Worker 进程关闭监听句柄,处理完正在进行的请求后结束进程。
  Nginx 命令行中 -s 参数的每个值都对应这一个信号。因此,我们也可以直接对 Master 进程发生相应信号达到同样的目的。 # pid表示Nginx的主进程id号 # kill -s 信号 pid 2. Nginx的事件驱动模型2.1 事件驱动模型
  事件驱动模型是实现异步非阻塞的一个手段。对于 web 服务器来说,客户端 A 的请求连接到服务端时,服务端的某个进程(Nginx 的 worker 进程)会处理该请求,此进程在没有返回给客户端 A 结果时,它又去处理了客户端 B 的请求。服务端把客户端 A 以及客户端 B 发来的请求作为事件交给了"事件收集器",而"事件收集器"再把收集到的事件交由"事件发送器"发送给"事件处理器"进行处理。最后"事件处理器"处理完该事件后,通知服务端进程,服务端进程再把结果返回给客户端A、客户端B。在这个过程中,服务端进程做的事情属于用户级别的,而事件处理这部分工作属于内核级别的。也就是说这个事件驱动模型是需要操作系统内核来作为支撑的。 2.2 Nginx的事件驱动模型介绍
  Nginx 的事件驱动模型,支持 select、poll、epoll、rtsig、kqueue、/dev/poll、eventport 等。 最常用的是前三种,特别是 epoll 模型,这也是 Nginx 中的默认配置。可以说 epoll 模型成就了 Nginx 的高性能和高并发特性。 select模型:创建所关注事件的描述符集合,对于一个描述符,可以关注其上面的读(Read)事件、写(Write)事件以及异常发生(Exception)事件。 在select模型中,要创建这3类事件描述符集合。调用底层提供的select()函数,等待事件发生。轮询所有事件描述符集合中的每一个事件描述符,检查是否有相应的事件发生,如果有就进行处理。 poll模型:poll模型是Linux平台上的事件驱动模型,在Linux2.1.23中引入的,Windows平台不支持该模型。poll模型和select模型工作方式基本相同,区别在于,select模型创建了3个描述符集合,而poll模型只创建一个描述符集合。 epoll模型:epoll模型属于poll模型的变种,在Linux2.5.44中引入。epoll比poll更加高效,原因在于它不需要轮询整个描述符集合,而是Linux内核会关注事件集合,当有变动时,内核会发来通知。正式这种异步,非阻塞、IO多路复用的事件驱动模型,才使得 Nginx 有很高的运行效率。 3. 案例3.1 Nginx 进程模型实验
  按照前面的讲解,我们测试给 Nginx 的 Master 进程直接发送信号,并观察进程情况: # 确认没有 Nginx 进程 [root@server sbin]# ps -ef | grep nginx root     10603 10137  0 14:23 pts/2    00:00:00 grep --color=auto nginx # 启动 Nginx  [root@server sbin]# ./nginx # 可以看到 Nginx 启动的进程 [root@server sbin]# ps -ef | grep nginx root     10640     1  0 14:23 ?        00:00:00 nginx: master process ./nginx root     10642 10640  0 14:23 ?        00:00:00 nginx: worker process root     10643 10640  0 14:23 ?        00:00:00 nginx: worker process root     10644 10640  0 14:23 ?        00:00:00 nginx: cache manager process root     10645 10640  0 14:23 ?        00:00:00 nginx: cache loader process
  可以看到 Nginx 启动了 Master 进程(pid=10640),后由 Master 进程 fork 除了两个 Worker 进程和两个 Cache 进程,他们的父进程 id 均为10640。现在做如下几个操作: 关闭进程号等于10642的 Worker 进程 [root@server sbin]# sudo kill -SIGTERM 10642 [root@server sbin]# ps -ef | grep nginx root     10640     1  0 14:23 ?        00:00:00 nginx: master process ./nginx root     10643 10640  0 14:23 ?        00:00:00 nginx: worker process root     10644 10640  0 14:23 ?        00:00:00 nginx: cache manager process root     10869 10640  0 14:32 ?        00:00:00 nginx: worker process root     10939 10137  0 14:32 pts/2    00:00:00 grep --color=auto nginx
  可以看到原先的 Worker 进程被杀死后,Nginx 的主进程又立马拉起来一个新的 Worker 进程提供服务。这说明 Nginx 是非常可靠的,只要 Master 进程还在就会保证 Worker 进程持续存在并提供服务。 向主进程发送 SIGHUP 信号,等价于 -s reload 操作。可以看到除了 Master 进程外,所有其他进程已经是新启动的进程了。 [root@server sbin]# sudo kill -SIGHUP 10640 [root@server sbin]# ps -ef | grep nginx root     10640     1  0 14:23 ?        00:00:00 nginx: master process ./nginx root     11059 10640  0 14:37 ?        00:00:00 nginx: worker process root     11060 10640  0 14:37 ?        00:00:00 nginx: worker process root     11061 10640  0 14:37 ?        00:00:00 nginx: cache manager process root     11098 10137  0 14:37 pts/2    00:00:00 grep --color=auto nginx 向主进程发生 SIGTERM 信号,等价于 -s stop 操作,即停止 Nginx 服务,关闭所有进程 [root@server sbin]# sudo kill -SIGTERM 10640 [root@server sbin]# ps -ef | grep nginx root     11267 10137  0 14:43 pts/2    00:00:00 grep --color=auto nginx 向主进程发生 USR1 信号,等价于 -s repoen 操作,即重新打开日志文件 [root@server sbin]# ./nginx  [root@server sbin]# ps -ef | grep nginx root     11408     1  0 14:48 ?        00:00:00 nginx: master process ./nginx root     11410 11408  0 14:48 ?        00:00:00 nginx: worker process root     11411 11408  0 14:48 ?        00:00:00 nginx: worker process root     11412 11408  0 14:48 ?        00:00:00 nginx: cache manager process root     11413 11408  0 14:48 ?        00:00:00 nginx: cache loader process root     11484 10137  0 14:49 pts/2    00:00:00 grep --color=auto nginx  [root@server sbin]# ll ../logs/access.log  -rw-r--r-- 1 root root 384349 Feb 11 14:26 ../logs/access.log  [root@server sbin]# rm -rf ../logs/access.log   [root@server sbin]# ll ../logs/access.log  ls: cannot access ../logs/access.log: No such file or directory  [root@server sbin]# kill -USR1 11408 [root@server sbin]# ll ../logs/access.log  -rw-r--r-- 1 root root 0 Feb 11 14:50 ../logs/access.log
  可以看到,在移除 Nginx 的 access.log 日志后,在向 Nginx 主进程发送 USR1 信号,Nginx 会重新生成一个新的 access.log 日志。 4. 小结
  本节主要介绍 Nginx 的进程模型以及介绍了 Master 和 Worker 之间的通信过程。此外,我们介绍了 Nginx 的事件驱动模型。异步、多路IO复用、非阻塞等特点早就了 Nginx 的高性能。接下来,我们完成了 Nginx 进程模型的几个实验,直观体检 Nginx 的进程模型。下一节将重点介绍 Nginx 模块相关的内容,并手动实现一个简单的 http 模块。

朱啸虎蔡文胜都来了,中国企业和投资人跟风买入无聊猿NFT记者司林威猿宇宙来势汹汹,中国的投资人也坐不住了。5月2日消息,继朱啸虎蔡文胜之后,LinkVC创始人林嘉鹏和同舟资本创始合伙人张了了分别购入一枚无聊猿NFT,加入了无聊猿游艇俱乐D。A。Davidson将亚马逊(AMZN。US)目标价从3,900美元降至3,125美元,维持买入评级D。A。Davidson将亚马逊(AMZN。US)目标价从3,900美元降至3,125美元,维持买入评级。该公司的成本压力持续升高。随着电子商务销售增长放缓,亚马逊需要新的收入来源努比亚手机奋起直追,5200mAh100倍变焦,6299元是否值得入手努比亚手机,作为中华酷联其中的一员,可以说曾经也是之前风靡一时的手机品牌。这个品牌作为手机市场上曾经的王者品牌,这款手机无论是手机的产品配备还是科技水平都是相当不错的。而这款品牌因小米12Ultra概念图曝光,背面一半都是相机?搭载包括莱卡潜望镜镜头在内的四摄小米将于下月上市的小米12Ultra型号的概念图在网上曝光。从最近泄露的小米12Ultra概念渲染图来看,背面的一半左右都是圆形相机模块。这与去年年小蓝标加持蔡司影像旗舰价格跌破三千元随着移动互联网的发展,我们越来越习惯使用影像来记录日常生活。而手机作为现代人必不可少的电子产品,消费者也越来越重视其影像能力。顺应这一潮流,各大手机品牌也不断提升自身产品的影像实力50倍变焦12GB256GB,跌至1999元,摩托罗拉edgeSPro大降价为什么消费者都热衷于购买大品牌的产品?因为相对来说,大品牌的产品供应链更加出色,无论是售后还是产品质量,相对来说都更有保证。这种情况下,自然会让某些冷门品牌的产品被市场冷落,哪怕这京东骁龙8Gen1机型销量排行榜,小米12排名第二,第一名很意外自高通骁龙8Gen1处理器发布以来,这是高通第一款搭载Armv9架构的芯片,得益于内置八核KryoCPU和三星4nm制程工艺,安兔兔跑分轻松突破100W分,且受骁龙888处理器发热华硕系统恢复盘使用时出现CannotfindWIMfile问题这是很久以前有个同学过来请教的电脑还原系统的问题,很多品牌电脑都会有一些比较有特色的问题,所以记录了下来。华硕笔记本,有恢复盘,用光盘启动后进入恢复管理界面,不管是选恢复到第一个分好物推荐第3期TOP10小米好物,手机电视净化器空调等说到小米,说到雷军,曾经就是性价比的代表,为发烧而生在当时的情境下,绝对是宣传典范,消灭山寨机的功臣。但是现在的小米手机冲击高端,发力线下,很多米粉认为似乎现在的小米与性价比越走越红米K50全系降价!包揽三款年度旗舰芯片,哪一款性价比更高?为了迎接五一国际劳动节,红米K50系列全系降价50400元不等,不少小伙伴感到心动想要换机。三款机型分别搭载天玑8100天玑9000骁龙8Gen1处理器,究竟哪一款性价比更高,更值违反规定对外提供担保公司多个银行账户被冻结荣科科技(300290。SZ)收深交所关注函智通财经APP获悉,4月29日,深交所向荣科科技股份有限公司(荣科科技,300290。SZ)发出关注函。关注函指出,2022年4月28日晚间,公司披露关于公司部分银行账户被冻结的公
小米被迫反向升级?启用内存扩展,粉丝我不要众所周知的所谓内存扩展在电脑上N年前就有了,但是没什么人用。但是由于某些品牌的宣传83,128秒变20G大内存手机来看,这对线下销量宣传尤其重要。估计小米也是被迫升级内存扩展。要说欧拉汽车新车定名芭蕾猫,宝藏级别的闺蜜,只有它贴心懂你都知道未来是新能源汽车的天下,大众本田丰田现代等全球知名车企都开始往电气化转型,而我们自主品牌也是如此,这不长城欧拉又发布了一款全新车型芭蕾猫,新车将于成都车展正式发布。芭蕾猫的造五菱凯捷再推新车型,做一台有态度的高品质MPV说起国产神车,必须提一提五菱宏光跟哈弗H6,它们可以说是国产骄傲,深受消费者的喜爱。今天咱就来说说五菱,五菱旗下高端MPV凯捷销量虽然开局不错,但是到现在销量出现明显下滑,所以五菱造型更加年轻,本田新款雅阁实车图曝光,帕萨特表示压力巨大近日我们通过神奇的海外媒体获悉了本田全新雅阁的实车图,新车现在已经在海外正式上市,预计年内正式登陆国内市场,话不多说,一起来看看吧!新车造型并没有太大的变化,只不过针对细节方面进行7月自主SUV销量排行榜前五名新鲜出炉,红旗HS5成为最大黑马不知道从什么时候开始,SUV跟MPV成为了国内汽车市场的新宠,今天就给大家盘点7月份自主SUV销量榜前五名,这五款车型单月销量全部破万,最关键的是这一次红旗居然榜上有名,话不多说,威马没有任何兴趣参与众泰汽车重组,众泰汽车重组路在何方?说起咱们国内汽车品牌,不得不提提奇瑞比亚迪吉利长城长安等品牌,它们可以说是咱们国产品牌的骄傲,深受消费者的喜爱,不过也有表现不佳的,比如今天的主角众泰,说起众泰我想大家都不陌生,可小米MIX4的防丢失模式无卡联网服务将取消今晚晚上19。30,小米手机微博官宣关于取消防丢失模式无卡联网服务的说明8月10日,我公司发布手机新品小米MIX4,该产品防丢失模式提供了无卡联网服务,此服务技术方案不符合国家相关小米11WIFI问题官方售后通告来了小米官方售后正式发出售后公告来了,近期各种新闻媒体都在报道小米11系列烧WIFI啊,黑屏啊哪里都是这种新闻,就是最近6月冲上单月销量全球第一的新闻也美这种wifi烧了,主板坏了之类小米6月份销量首次登顶全球第一小米6月份单月销量全球第一,世界第一,超三星苹果。根据CounterpointResearch的最新的月度市场分析数据。小米2021年6月的单月销量首次超越三星和苹果。登顶全球第一阿里女员工事件,揭露丑陋的陪酒文化,引发思考近日阿里巴巴一女员工自述被领导要求陪济南华联商家喝酒其间遭到商家和领导。公司处理不当,无奈食堂发传单维权,引发网上热议,目前阿里女员工被侵害案由济南警方侦办,希望尽快还原真相,给予又要打压中企?荣耀制裁被美议员提议荣耀又要被打压了吗??荣耀刚刚要准备复苏,取得一些国内的成绩,据说美国议员又在提议了制裁荣耀了。他们表示被列入清单的公司未在美国政府批准的情况下,是禁止从美国公司购买零件部件或者使