【Nginx】nginx的工作模式和信號量控制


     nginx是一個多進程/多線程高性能web服務器在linux系統中,nginx啟動后會以后台守護進程(daemon)的方式去運行,后台進程包含一個master進程和多個worker進程(這個數量可以在nginx.conf配置文件中worker_processes這個參數設置),可以充分利用多核架構。nginx工作模式是以多進程的方式來工作的,當然nginx也是支持多線程的方式的,只是我們主流的方式還是多進程的方式,也是nginx的默認方式。nginx在啟動之后會有一個master進程和多個worker進程(默認是一個),多個worker子進程將監聽同一個端口,並行處理請求。

     master主進程主要用來管理worker進程,主要作用是:讀取並驗正配置信息,管理真正提供服務的worker進程,向各worker進程發送信號,監控worker進程的運行狀態,當worker進程退出后(異常情況下),會自動重新啟動新的worker進程。master進程不會對用戶請求提供服務,而用戶的請求則是worker進程來響應的。

    nginx是通過信號來控制,比如關閉,重啟等去控制nginx進程。nginx信號是屬於nginx進程間的通信的一種機制,比如master主進程控制多個worker子進程,也是通過信號控制的,如下圖。

 

worker 進程數應該設置為等於 CPU 的核數,高流量並發場合也可以考慮將進程數提高至 CPU 核數 * 2。

[root@localhost oa_workflow_test]# ps aux | grep nginx
root       2381  0.0  0.0  47688  1464 ?        Ss   6月01   0:00 nginx: master process /usr/local/nginx/sbin/nginx
www        2383  0.0  0.1  50216  2304 ?        S    6月01   0:00 nginx: worker process
nginx      2624  0.0  0.3 775948  6800 ?        S    6月01   0:00 php-fpm: pool www
nginx      2625  0.0  0.3 775948  6800 ?        S    6月01   0:00 php-fpm: pool www
root      69028  0.0  0.0 114704   976 pts/1    R+   12:24   0:00 grep --color=auto nginx
[root@localhost oa_workflow_test]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost oa_workflow_test]# ps aux | grep nginx
root       2381  0.0  0.1  48220  2728 ?        Ss   6月01   0:04 nginx: master process /usr/local/nginx/sbin/nginx
www        2383  0.0  0.1  50216  2304 ?        R    6月01   0:02 nginx: worker process is shutting down
nginx      2624  0.0  0.3 775948  6800 ?        S    6月01   0:00 php-fpm: pool www
nginx      2625  0.0  0.3 775948  6800 ?        S    6月01   0:00 php-fpm: pool www
www       69034 36.0  0.0      0     0 ?        R    12:24   0:01 [nginx]
www       69035 60.6  0.1  50548  2392 ?        R    12:24   0:01 nginx: master process /usr/local/nginx/sbin/nginx
www       69036 34.0  0.1  50548  2560 ?        S    12:24   0:01 nginx: worker process
www       69037 67.6  0.1  50548  2560 ?        S    12:24   0:02 nginx: worker process
www       69038 36.3  0.1  50548  2260 ?        R    12:24   0:01 nginx: master process /usr/local/nginx/sbin/nginx
root      69040 49.0  0.0 114708   980 pts/1    S+   12:24   0:00 grep --color=auto nginx

 

 

Nginx支持以下幾種信號選項:

  • TERM,INT:       快速關閉                                                     
  • QUIT :從容關閉(優雅的關閉進程,即等請求結束后再關閉)     
  • HUP :平滑重啟,重新加載配置文件 (平滑重啟,修改配置文件之后不用重啟服務器。直接kill -PUT 進程號即可)
  • USR1 :重新讀取日志文件,在切割日志時用途較大(停止寫入老日志文件,打開新日志文件,之所以這樣是因為老日志文件就算修改的文件名,由於inode的原因,nginx還會一直往老的日志文件寫入數據) 
  • USR2 :平滑升級可執行程序  ,nginx升級時候用                                
  • WINCH :從容關閉工作進程                                           

    

Nginx信號控制語法:

      kill -信號選項 nginx的主進程號

   例如:從容關閉nginx服務

kill -QUIT nginx主進程號

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM