啟動
啟動代碼格式:Nginx安裝目錄地址 -c nginx配置文件地址
例如:
[root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
停止
nginx的停止有三種方式:
從容停止
1、查看進程号
[root@LinuxServer ~]# ps -ef|grep nginx
2、殺死進程
[root@LinuxServer ~]# kill -QUIT 2072
1、查看進程号
[root@LinuxServer ~]# ps -ef|grep nginx
2、殺死進程
[root@LinuxServer ~]# kill -TERM 2132
或 [root@LinuxServer ~]# kill -INT 2132
強制停止
[root@LinuxServer ~]# pkill -9 nginx
重啟
1、驗證nginx配置文件是否正确
方法一:進入nginx安裝目錄sbin下,輸入命令./nginx -t
看到如下顯示nginx.conf syntax is ok
nginx.conf test is successful
說明配置文件正确!
方法二:在啟動命令-c前加-t
2、重啟Nginx服務
方法一:進入nginx可執行目錄sbin下,輸入命令./nginx -s reload 即可
方法二:查找當前nginx進程号,然後輸入命令:kill -HUP 進程号 實現重啟nginx服務
Nginx 的整體架構
Nginx 裡有一個 master 進程和多個 worker 進程。master 進程并不處理網絡請求,主要負責調度工作進程:加載配置、啟動工作進程及非停升級。worker 進程負責處理網絡請求與響應。
master進程主要用來管理worker進程,具體包括如下4個主要功能:
接收來自外界的信号。
向各worker進程發送信号。
監控woker進程的運行狀态。
當woker進程退出後(異常情況下),會自動重新啟動新的woker進程。
woker進程主要用來處理基本的網絡事件:
多個worker進程之間是對等且相互獨立的,他們同等競争來自客戶端的請求。
一個請求,隻可能在一個worker進程中處理,一個worker進程,不可能處理其它進程的請求。
worker進程的個數是可以設置的,一般我們會設置與機器cpu核數一緻。同時,nginx為了更好的利用多核特性,具有cpu綁定選項,我們可以将某一個進程綁定在某一個核上,這樣就不會因為進程的切換帶來cache的失效。
Ngnix 是如何實現高性能的?
事件驅動模型
基于異步及非阻塞的事件驅動模型,可以說是 Nginx 得以獲得高并發、高性能的關鍵因素。這一點上和 Netty 類似,底層都是使用的 BSD kqueue、Linux epoll 及 Solaris event ports。
多進程機制
使用多進程的好處有兩點:
進程之間不共享資源,不需要加鎖,減少了使用鎖對性能造成的影響,同時降低編程的複雜度,降低開發成本。
采用獨立的進程,可以讓進程互相之間不會影響,如果一個進程發生異常退出時,其它進程正常工作,master 進程則很快啟動新的 worker 進程,确保服務不會中斷,從而将風險降到最低。
内存池
為了避免出現内存碎片,減少向操作系統申請内存的次數、降低各個模塊的開發複雜度,Nginx 設計了簡單的内存池,它的作用主要是把多次向系統申請内存的操作整合成一次,這大大減少了 CPU 資源的消耗,同時減少了内存碎片。
模塊化設計
高度模塊化的設計是 Nginx 的架構基礎。Openresty 就是在 Nginx 上引入了 lua 等第三方模塊,使得擴展更加方便了。
資料
資料内容包括:C/C ,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,嵌入式 等。。。後台私信;資料;兩個字可以免費領取,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!