sendfile 對Nginx效能的提公升

2021-06-29 16:18:12 字數 630 閱讀 6583

linux kernel 2.2之前,(如圖)讀寫資料基本都是使用read系統呼叫和write系呼叫,以nginx來說如果乙個請求建立,從磁碟的檔案到網路連線之間會通過硬體(dma)---核心層---使用者層多次讀寫系統來完成檔案資料的複製傳輸:從核心層用read系統呼叫讀到使用者層,再從使用者層用write系統呼叫寫到核心層,每一次使用者層到核心層的進行一次上下文轉換,這種代價是非常昂貴的。甚至在沒有資料變化時這種複製尤其顯得多餘。如果nginx接受大量併發請求,這種系統呼叫就會非常頻繁,伺服器的效能就會下降。

在linux kernel2.2版本之後出現了一種叫做「零拷貝(zero-copy)」系統呼叫機制,目前很多應用伺服器如apache、samba、nginx都支援sendfile。注意:sendfile系統呼叫是一種檔案傳輸的系統呼叫和kernel系統呼叫關係不大。

如圖所示,nginx在支援了sendfile系統呼叫後,避免了核心層與使用者層的上線文切換(content swith)工作,大大減少了系統效能的開銷。

階段性複習nginx

階段性複習nginx,持續更新 nginx 是乙個高效能的http和反向 的web伺服器,特點 占用記憶體少,併發能力強。主要功能 反向 伺服器端前加個 給伺服器穿個馬甲有保護作用,有一定的抗風險能力,黑客只能攻擊nginx的伺服器 負載均衡 把多台伺服器連線起來,根據演算法發對應的請求,做到了瞬時...

SNMP對nginx 狀態監控

snmp對nginx 狀態監控 通過nginx第三方模組,來實現對相關資料採集,通過對snmp進行指令碼擴充套件,來實現snmp傳送 nginx第三方模組 ngx req status master 模組說明 實現了對指定網域名稱執行過程中對其頻寬,所耗流量,請求數及連線數進行了統計 編譯安裝 sh...

對素數無窮性的證明

不能被除了1和本身以外其他任何數整除的數稱為素數。2,3,5,7,11,13,17,19都是素數。所有的非素數稱為合數。素數具有原子性。每乙個合數都可以以唯一形式被寫成質數的乘積,即分解質因數。算術基本定理 如24 2 2 2 3。1既不是素數也不是合數。使用了反證法 首先假設存在乙個最大的素數p。...