Nginx工作原理(Master+Worker)

更多知識,請移步我的小破站:http://hellofriend.top

原理

Nginx 採用的是多進程(單線程) & 多路IO複用模型。使用了 I/O 多路複用技術的 Nginx,就成了 “併發事件驅動” 的服務器。

  1. Nginx 在啓動後,會有一個 master 進程和多個相互獨立的 worker 進程。
  2. 接收來自外界的信號,向各worker進程發送信號,每個進程都有可能來處理這個連接。
  3. master 進程能監控 worker 進程的運行狀態,當 worker 進程退出後(異常情況下),會自動啓動新的 worker 進程。也就是說,Worker的工作方式是爭搶

一個master和多個worker的工作方式的好處

  1. 可以使用 nginx -s reload 熱部署,利用 Nginx 進行熱部署的操作。
  2. 每個 worker 是獨立的進程,其中有一個worker出現問題,其他的worker都能正常運行,繼續進行爭搶的過程,完成服務器的響應,不會造成服務的中斷。

設置多少個worker合適?

注意 worker 進程數,一般會設置成機器 cpu 核數。因爲更多的worker 數,只會導致進程相互競爭 cpu,從而帶來不必要的上下文切換。

使用多進程模式,不僅能提高併發率,而且進程之間相互獨立,一個 worker 進程掛了不會影響到其他 worker 進程。

work_connection(worker的連接數)

Q:當發送一個請求的時候,佔用worker的多少個連接數?

A:2個(訪問靜態資源,一來一回)或者4個(訪問動態資源,一來一回+和 tomcat 的一來一回)。

最大併發量

Q:nginx有1個master,有4個worker,每個worker的最大連接數爲1024,那麼Nginx支持的最大併發爲多少?

A:要分情況考慮:

訪問靜態資源: work_connections * worker_processes /2

訪問動態資源::work_connections * worker_processes /4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章