<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] ***** # 1、Nginx底層的流程 客戶端發送請求首先到nginx的master,master相當于一個管理員,管理員得到任務之后,把任務給下面的worker,worker通過爭搶機制得到這個任務,然后worker通過反向代理用tomcat完成我們具體的操作,返回給客戶端。 ![](https://img.kancloud.cn/ae/53/ae53df93e1428e818f19ff429b16f65b_677x363.png) ## 2、 worler如何進行工作 ![](https://img.kancloud.cn/46/65/46650d01a3d09a444522a9d772054058_835x407.png) ## 3、一個master和多個worker、好處 可以使用 nginx -s reload熱部署,利用 nginx進行熱部署操作 ***** 1. 在nginx啟動后,會有一個master進程和多個worker進程,master進程主要用來管理worker進程,包括:接受信號,將信號分發給worker進程,監聽worker進程工作狀態,當worker進程退出時(非正常),啟動新的worker進程。基本的網絡事件會交給worker進程處理。多個worker進程之間是對等的,他們同等競爭來自客戶端的請求,各進程互相之間是獨立的。一個請求,只可能在一個worker進程中處理,一個worker進程,不可能處理其它進程的請求。?worker進程的個數是可以設置的,一般我們會設置與機器cpu核數一致,這里面的原因與nginx的進程模型以及事件處理模型是分不開的。 2. 當master接收到重新加載的信號會怎么處理(./nginx -s reload)?,master會重新加載配置文件,然后啟動新的進程,使用的新的worker進程來接受請求,并告訴老的worker進程他們可以退休了,老的worker進程將不會接受新的,老的worker進程處理完手中正在處理的請求就會退出。 3. worker進程是如何處理用戶的請求呢?首先master會根據配置文件生成一個監聽相應端口的socket,然后再faster出多個worker進程,這樣每個worker就可以接受從socket過來的消息(其實這個時候應該是每一個worker都有一個socket,只是這些socket監聽的地址是一樣的)。當一個連接過來的時候,每一個worker都能接收到通知,但是只有一個worker能和這個連接建立關系,其他的worker都會連接失敗,這就是所謂的驚群現在,為了解決這個問題,nginx提供一個共享鎖accept\_mutex,有了這個共享鎖后,就會只有一個worker去接收這個連接。當一個worker進程在accept這個連接之后,就開始讀取請求,解析請求,處理請求,產生數據后,再返回給客戶端,最后才斷開連接,這樣一個完整的請求就是這樣的了。 [https://www.cnblogs.com/chenjfblog/p/8715580.html](https://www.cnblogs.com/chenjfblog/p/8715580.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看