[导入]apache的性能优化之sendfile

      Apache2.0以后的版本,如果操作系统支持sendfile() ,那么Apache就会使用内核提供的sendfile()来发送文件。有人说Linux2.4内核支持sendfile()系统调用,但2.6内核已经不再支持,不过我在linux2.6.17内核里调用sendfile,发现还是支持的,谁清楚这事?
    sendfile()是用于数据拷贝的,它是两个文件描述符之间的操作函数,这个操作是linux内核中操作实现的,因此被称为零拷贝,sendfile函数比起内核中read和write函数高效许多,因为read和write是要把数据拷贝到用户应用层操作,对于大文件来说,sendfile的优势就明显的体现出来了,特别是对下载站,音频网站,视频网站有很大优势。作为现代操作系统支持的一种高性能网络IO方式,sendfile调用可以将文件内容直接推送到网卡的buffer当中,大大避免了Web服务器读写文件的开销,直接减轻了web服务器的负担。

但是对于下面两种情况,就要避免sendfile的使用了
  

1。一些平台可能会有Apache编译系统检测不到的有缺陷的sendfile支持,特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时。



2。对于一个挂载了NFS文件系统的内核,它可能无法可靠的通过自己的cache服务于网络文件。


这时候就要用
EnableSendfile off 指令将sendfile调用禁用。
Tags - apache性能 , sendfile
文章来源: http://www.askwan.com/read.php?65

转载于:https://www.cnblogs.com/askwan/archive/2008/07/11/1240413.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值