<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [toc] ## Nginx 是如何實現高并發的? Nginx 采用的是多進程(單線程) & 多路IO復用模型。使用了 I/O 多路復用技術的 Nginx,就成了”并發事件驅動“的服務器。其實現了異步,非阻塞,使用了epoll 和大量的底層代碼優化。 如果一個server采用一個進程負責一個request的方式,那么進程數就是并發數。正常情況下,會有很多進程一直在等待中。 而nginx采用一個master進程,多個woker進程的模式。 * master進程主要負責收集、分發請求。每當一個請求過來時,master就拉起一個worker進程負責處理這個請求。 * 同時master進程也負責監控woker的狀態,保證高可靠性 * woker進程一般設置為跟cpu核心數一致。nginx的woker進程在同一時間可以處理的請求數只受內存限制,可以處理多個請求。 Nginx 的異步非阻塞工作方式正把當中的等待時間利用起來了。在需要等待的時候,這些進程就空閑出來待命了,因此表現為少數幾個進程就解決了大量的并發問題。 >[info] 題外話: 這和PHP擴展swoole的原理一樣 ![](https://box.kancloud.cn/c570433f949c547301942f8e823e9e78_562x292.png) 每進來一個request,會有一個worker進程去處理。但不是全程的處理,處理到什么程度呢?處理到可能發生阻塞的地方,比如向上游(后端)服務器轉發request,并等待請求返回。那么,這個處理的worker很聰明,他會在發送完請求后,注冊一個事件:“如果upstream返回了,告訴我一聲,我再接著干”。于是他就休息去了。此時,如果再有request 進來,他就可以很快再按這種方式處理。而一旦上游服務器返回了,就會觸發這個事件,worker才會來接手,這個request才會接著往下走。 ## 為什么 Nginx 不使用多線程? Apache: 創建多個進程或線程,而每個進程或線程都會為其分配 cpu 和內存(線程要比進程小的多,所以worker支持比perfork高的并發),并發過大會耗光服務器資源。 Nginx: 采用單線程來異步非阻塞處理請求(管理員可以配置Nginx主進程的工作進程的數量)(epoll),不會為每個請求分配cpu和內存資源,節省了大量資源,同時也減少了大量的CPU的上下文切換。所以才使得Nginx支持更高的并發。 ## 配置調優 **1\. 調整worker\_processes** 指Nginx要生成的worker數量,最佳實踐是每個CPU運行1個工作進程。了解系統中的CPU核心數,輸入 grep processor /proc/cpuinfo | wc -l # 或者htop htop **2\. 最大化worker\_connections** Nginx Web服務器可以同時提供服務的客戶端數。與worker\_processes結合使用時,獲得每秒可以服務的最大客戶端數 <br /> **最大客戶端數/秒=工作進程\*工作者連接數** 為了最大化Nginx的全部潛力,應將worker\_processes設置為核心一次可以運行的允許的最大進程數1024。 <br /> **3\. 啟用Gzip壓縮** 壓縮文件大小,減少了客戶端http的傳輸帶寬,因此提高了頁面加載速度。 <br /> **4\.為靜態文件啟用緩存** 為靜態文件啟用緩存,以減少帶寬并提高性能,可以添加下面的命令,限定計算機緩存網頁的靜態文件 > 第三點和第四點 具體看前 《【nginx網站性能優化篇(1)】gzip壓縮與expire瀏覽器緩存》 <br /> **5\. Timeouts** keepalive連接減少了打開和關閉連接所需的CPU和網絡開銷,獲得最佳性能需要調整的變量: ![](https://box.kancloud.cn/3b8464b54c4cedb4c7404d90a9c291ef_656x93.png) <br /> **6\. 禁用access\_logs** 訪問日志記錄,它記錄每個nginx請求,因此消耗了大量CPU資源,從而降低了nginx性能。 完全禁用訪問日志記錄 access\_log off; 如果必須具有訪問日志記錄,則啟用訪問日志緩沖 access\_log /var/log/nginx/access.log主緩沖區= 16k <br /> **7\. fastcgi 調優** ~~~ fastcgi_connect_timeout 600; fastcgi_send_timeout 600; fastcgi_read_timeout 600; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_temp_path/usr/local/nginx1.10/nginx_tmp; fastcgi_intercept_errors on; fastcgi_cache_path/usr/local/nginx1.10/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128minactive=1d max_size=10g; ~~~ >[info] 其實可以參考網上的[lnmp一鍵壓縮包](https://lnmp.org/),配置得就很好 參考鏈接: https://www.toutiao.com/i6673796893761339911/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1560408440&app=news_article&utm_source=weixin&utm_medium=toutiao_android&req_id=2019061314472001002307219700879DB&group_id=6673796893761339911
                  <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>

                              哎呀哎呀视频在线观看