sendfile()对Nginx性能的提升
2015-04-09 01:12
495 查看
原文地址:http://www.linuxidc.com/Linux/2014-05/102321.htm
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)工作,大大减少了系统性能的开销。
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的X-Sendfile机制提升PHP文件下载性能
- sendfile()对Nginx性能的提升
- 使用 Nginx 的 X-Sendfile 机制提升 PHP 文件下载性能
- 使用Nginx的X-Sendfile机制提升PHP文件下载性能
- Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能
- Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能
- 在Nginx中使用X-Sendfile头提升PHP文件下载的性能(针对大文件下载)
- sendfile()对Nginx性能的提升
- 使用 sendfile() 提升网络文件发送性能
- RoR网站如何利用lighttpd的X-sendfile功能提升文件下载性能
- sendfile原理,实现文件传输性能的提升
- 转:RoR网站如何利用lighttpd的X-sendfile功能提升文件下载性能
- sendfile原理,实现文件传输性能的提升
- sendfile原理,实现文件传输性能的提升
- 使用sendfile提升性能
- 使用 sendfile() 提升网络文件发送性能
- [zz]sendfile原理,实现文件传输性能的提升
- sendfile原理,实现文件传输性能的提升
- Nginx性能提升--引入线程池性能提升9倍
- NGINX引入线程池 性能提升9倍