日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

运行中的Nginx进程间的关系

發布時間:2024/2/28 Nginx 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 运行中的Nginx进程间的关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第2章 Nginx的配置

Nginx擁有大量官方發布的模塊和第三方模塊,這些已有的模塊可以幫助我們實現Web服務器上很多的功能。使用這些模塊時,僅僅需要增加、修改一些配置項即可。因此,本章的目的是熟悉Nginx的配置文件,包括配置文件的語法格式、運行所有Nginx服務必須具備的基礎配置以及使用HTTP核心模塊配置靜態Web服務器的方法,最后還會介紹反向代理服務器。

通過本章的學習,讀者可以:熟練地配置一個靜態Web服務器;對影響Web服務器性能的各個配置項有深入的理解;對配置語法有全面的了解。通過互聯網或其他途徑得到任意模塊的配置說明,然后可通過修改nginx.conf文件來使用這些模塊的功能。

2.1 運行中的Nginx進程間的關系

在正式提供服務的產品環境下,部署Nginx時都是使用一個master進程來管理多個worker進程,一般情況下,worker進程的數量與服務器上的CPU核心數相等。每一個worker進程都是繁忙的,它們在真正地提供互聯網服務,master進程則很“清閑”,只負責監控管理worker進程。worker進程之間通過共享內存、原子操作等一些進程間通信機制來實現負載均衡等功能(第9章將會介紹負載均衡機制,第14章將會介紹負載均衡鎖的實現)。

部署后Nginx進程間的關系如圖2-1所示。

Nginx是支持單進程(master進程)提供服務的,那么為什么產品環境下要按照master-worker方式配置同時啟動多個進程呢?這樣做的好處主要有以下兩點:

由于master進程不會對用戶請求提供服務,只用于管理真正提供服務的worker進程,所以master進程可以是唯一的,它僅專注于自己的純管理工作,為管理員提供命令行服務,包括諸如啟動服務、停止服務、重載配置文件、平滑升級程序等。master進程需要擁有較大的權限,例如,通常會利用root用戶啟動master進程。worker進程的權限要小于或等于master進程,這樣master進程才可以完全地管理worker進程。當任意一個worker進程出現錯誤從而導致coredump時,master進程會立刻啟動新的worker進程繼續服務。

多個worker進程處理互聯網請求不但可以提高服務的健壯性(一個worker進程出錯后,其他worker進程仍然可以正常提供服務),最重要的是,這樣可以充分利用現在常見的SMP多核架構,從而實現微觀上真正的多核并發處理。因此,用一個進程(master進程)來處理互聯網請求肯定是不合適的。另外,為什么要把worker進程數量設置得與CPU核心數量一致呢?這正是Nginx與Apache服務器的不同之處。在Apache上每個進程在一個時刻只處理一個請求,因此,如果希望Web服務器擁有并發處理的請求數更多,就要把Apache的進程或線程數設置得更多,通常會達到一臺服務器擁有幾百個工作進程,這樣大量的進程間切換將帶來無謂的系統資源消耗。而Nginx則不然,一個worker進程可以同時處理的請求數只受限于內存大小,而且在架構設計上,不同的worker進程之間處理并發請求時幾乎沒有同步鎖的限制,worker進程通常不會進入睡眠狀態,因此,當Nginx上的進程數與CPU核心數相等時(最好每一個worker進程都綁定特定的CPU核心),進程間切換的代價是最小的。

舉例來說,如果產品中的服務器CPU核心數為8,那么就需要配置8個worker進程(見圖2-2)。

如果對路徑部分都使用默認配置,那么Nginx運行目錄為/usr/local/nginx,其目錄結構如下。
?

  • |---sbin ?
  • |????|---nginx ?
  • |---conf ?
  • |????|---koi-win ?
  • |????|---koi-utf ?
  • |????|---win-utf ?
  • |????|---mime.types ?
  • |????|---mime.types.default ?
  • |????|---fastcgi_params ?
  • |????|---fastcgi_params.default ?
  • |????|---fastcgi.conf ?
  • |????|---fastcgi.conf.default ?
  • |????|---uwsgi_params ?
  • |????|---uwsgi_params.default ?
  • |????|---scgi_params ?
  • |????|---scgi_params.default ?
  • |????|---nginx.conf ?
  • |????|---nginx.conf.default ?
  • |---logs ?
  • |????|---error.log ?
  • |????|---access.log ?
  • |????|---nginx.pid ?
  • |---html ?
  • |????|---50x.html ?
  • |????|---index.html ?
  • |---client_body_temp ?
  • |---proxy_temp ?
  • |---fastcgi_temp ?
  • |---uwsgi_temp ?
  • |---scgi_temp?
  • 總結

    以上是生活随笔為你收集整理的运行中的Nginx进程间的关系的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。