nginx 非同步非阻塞多程序模型

2021-07-30 17:39:55 字數 819 閱讀 3194

master程序負責

呼叫各module的初始化函式,讀取解析nginx配置檔案,模組module 解析執行 nginx.conf 配置檔案流程分析 ;

充當整個程序組與使用者的互動介面,接收使用者操作訊號管理worker程序,nginx核心程序模型

worker程序負責

搶占程序鎖,從監聽套接字中獲取客戶端連線,實現負載均衡;

接收客戶端套接字的資料,傳遞給upstream(如果有upstream),則否返回靜態檔案;

接收並處理master套接字中的互動命令。

nginx啟動時讀取並解析完配置檔案,如果不是測試啟動(-t)則開始繫結socket埠並設定socket屬性(比如非阻塞模式),便結束掉ngx_init_cycle()函式,跳回到主函式main():

master程序執行時會呼叫ngx_start_worker_processes()建立worker程序(數量是conf.worker_processes),並設定worker程序入口函式ngx_worker_process_cycle()

nginx在這裡實現了多程序的負載均衡:乙個程序長期擁有監聽套接字則期間的所有請求都將被這個工作程序處理;而多個工作程序同時擁有監聽套接字,當請求到達時會引發多個程序去爭搶這個請求,這種現象稱之為驚群(thundering herd)。nginx使用全域性程序鎖來處理,ngx_process_events_and_timers()

程序 執行緒 同步非同步 阻塞非阻塞

2015 08 19 15 23 38 週三 執行緒執行緒安全 如果你的 所在的程序中有多個執行緒在同時執行,而這些執行緒可能會同時執行這段 執行緒安全問題都是由全域性變數及靜態變數引起的 若每個執行緒中對全域性變數 靜態變數只有讀操作,而無寫操作,一般來說,這個全域性變數是執行緒安全的 若有多個執...

程序 執行緒 同步 非同步 阻塞 非阻塞

1.程序和執行緒 1 程序 process 是windows系統中的重要概念,它包含著乙個執行程式所需要的資源 乙個正在執行的應用程式在作業系統中被視為乙個程序 程序可以包含乙個或多個執行緒 程序和程序之間是相互獨立的,乙個程序無法訪問另外乙個程序的資料 2 執行緒 thread 是程序中的基本執行...

網路IO模型(同步非同步,阻塞非阻塞)

摘錄自 網路應用需要處理的無非兩大類問題 網路i o,資料計算 網路io的模型大致有如下幾種 同步模型 阻塞非阻塞 多路復用 訊號驅動式 非同步io 網路io的本質是socket的讀取,socket在linux系統被抽象為流,io可以理解為對流的操作。這個操作分為2個階段 1 等待流資料準備 2 從...