47 Nginx静态资源优化配置之sendfile
47 Nginx静态资源优化配置之sendfile
Nginx 对静态资源进行优化配置,主要基于属性配置进行优化:
sendfile on;
tcp_nopush on;
tcp_nodeplay on;
47.1 sendfile指令
sendfile:开启高效的文件传输模式
| 语法 | sendfile on | off; |
| 默认值 | sendfile off; |
| 位置 | http 、 server 、location ... |
请求静态资源的过程:客户端通过网络接口向服务端发送请求,操作系统将这些客户端的请求通过网络传递给服务端应用程序,服务器端应用程序会处理这些请求,请求处理完成以后,操作系统还需要将处理得到的结果通过网络原路传递回去
47.2 链路图对比
1.客户端在浏览器输入网址,通过网络,将请求发送到服务端
2.服务端分为用户区、内核区,应用程序nginx在用户区,用户区想要读取磁盘,需要经过内核区接口的调用
3.用户区通过内核区read()接口读取磁盘信息,将信息从磁盘拷贝(涉及第一次拷贝)到内核缓冲区
4.nginx读取要在用户区,所以会再将内核缓冲区的信息拷贝(涉及第二次拷贝)到应用程序缓冲区
5.nginx拿到信息后,通过Socket缓冲区write()接口将应用缓冲区的信息拷贝(涉及第三次拷贝)到内核网络层的Socket缓冲区
6.nginx再将Socket缓冲区的信息拷贝(涉及第四次拷贝)到网卡,网卡通过网络将信息发送回客户端

1.客户端在浏览器输入网址,通过网络,将请求发送到服务端
2.服务端分为用户区、内核区,应用程序nginx在用户区,用户区想要读取磁盘,需要经过内核区接口的调用
3.用户区通过内核区sendfile()接口读取磁盘信息,将信息从磁盘拷贝(涉及第一次拷贝)到内核缓冲区
4.sendfile 函数中指定了将信息交给的Socket,因此可以直接在内核缓冲区将信息传递给Socket缓冲区
5.nginx再将Socket缓冲区的信息拷贝(涉及第二次拷贝)到网卡,网卡通过网络将信息发送回客户端
总结:使用sendfile参数,减少两次拷贝和两次内核区与用户区交互的过程
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号