章節(jié)目錄
- 輕量級(jí)
- CPU親和
- 超強(qiáng)的靜態(tài)文件處理能力
輕量級(jí)
功能模塊少
源代碼只保留與http 及核心功能代碼,出于性能考慮,不像httpd 有那么豐富的插件。
代碼模塊化
易讀,可進(jìn)行二次改進(jìn)。
CPU親和
8核心 16核心,多核密集計(jì)算、多線程,接入層中間件
雙cpu、每個(gè)cpu有四個(gè)核心
不同worker 綁定不同核心 均勻分配,多個(gè)核心自動(dòng)切換的模式,會(huì)帶來核心切換資源消耗。
什么是CPU親和?
把CPU核心和NGINX 工作進(jìn)程綁定的方式,把每個(gè)worker進(jìn)程固定在一個(gè)cpu
上執(zhí)行,減少切換cpu的cache miss,獲得更好的性能。
超強(qiáng)的靜態(tài)文件處理能力-sendfile
內(nèi)核空間-用戶空間數(shù)據(jù)拷貝模式

普通http server對(duì)文件、網(wǎng)絡(luò)流的傳輸模式.jpeg
可以看到上圖為nginx應(yīng)用程序進(jìn)程配合內(nèi)核空間返回給用戶請(qǐng)求靜態(tài)文件的response過程
這種響應(yīng)模式,需要進(jìn)行 內(nèi)核空間 與 應(yīng)用進(jìn)程 空間之間數(shù)據(jù)的拷貝,比較消耗性能。
內(nèi)核空間零拷貝模式

內(nèi)核空間零拷貝模式.jpeg
直接通過內(nèi)核空間進(jìn)行數(shù)據(jù)的拷貝,sendfile利用帶了linux在2.2 零拷貝傳遞模式
nginx對(duì)靜態(tài)文件的處理能力超強(qiáng)的原因就是因?yàn)閟endfile使用了內(nèi)核空間零拷貝數(shù)據(jù)傳遞模式。