鍍金池/ 問答/Java  Linux/ Nginx對靜態(tài)文件處理性能高的原理?

Nginx對靜態(tài)文件處理性能高的原理?

在做Java服務(wù)器端開發(fā)的時候,一般都是用Nginx配合Tomcat使用,且靜態(tài)資源交給Nginx來處理反回給客戶端,而且一般的經(jīng)驗也是說Nginx在處理靜態(tài)資源的時候要比Tomcat性能高好幾倍,但是為什么會產(chǎn)生這樣的差距,Nginx處理靜態(tài)資源的原理是什么,高效的地方在哪里?

回答
編輯回答
尐飯團

通過socket發(fā)送一個文件流程大概如下:

  1. 打開文件
  2. 把文件數(shù)據(jù)讀到內(nèi)存
  3. 把內(nèi)存里的數(shù)據(jù)寫到socket

Nginx通過open_file_cache可以減少重復(fù)打開文件,然后通過sendfile系統(tǒng)調(diào)用減少內(nèi)核空間和用戶空間間的內(nèi)存復(fù)制,直接把文件內(nèi)存寫到socket,通過這些就能對單次返送進行優(yōu)化。

再加上Nginx的高效的事件處理機制,就能支持高并發(fā)。

2017年9月16日 15:54