nginx 开启高效文件传输模式sendfile on

性能优化-开启高效文件传输模式sendfile on

sendfile on; #特殊的数据传输功能
tcp_nopush on; #参数sendfile on用于开启文件高效传输模式,同时将tcp_nopush_on和tcp_nodelay on两个指令为on,可防止网络及磁盘I/O阻塞,提升Nginx工作效率

1) 设置参数 sendfile on
参数语法 sendfile on|off
放置位置 http,server,location,if in location

**2)设置参数tcp_nopush on **
说明:当有数据时,先别着急发送,确保数据包已经装满数据,避免了网了拥塞
参数语法: tcp_nopush on|off; 默认为 off
放置位置: http server location
参数作用:激活或禁用Linux上TCP_CORK socket选项,tcp_cork是linux下 tcp/ip传输的一个标准,这个标准的大概意思是,一般情况下,tcp交互的过程中,当应用程序接收到数据包后马上传送,不等待,而tcp_cork选项是数据包不会马上传送出去,等到数据包最大时,一次性传输出去,这样有助于解决网络堵塞,已经是默认了,此选项仅仅当开启sendfile时才生效,激活这个tcp_nopush参数可以允许把http response header和响应数据文件的开始部分放在一个文件里发布,其积极作用是减少网络报文段的数量。
**3)设置参数 tcp_nodelay on **
说明:用于激活tcp_nodelay功能,提高I/O性能
参数语法: tcp_nodelay on|off; 默认on
放置位置: http,server,location;
参数作用:激活或禁用Linux上的TCP_NODELAY选项,这个参数启用只在连接传输进入到keep-alive状态。TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”, Nagle 化 在这里的含义是用他的名字来命名的,此算法把较小的包组装为更大的帧, 默认情况下当数据发送时,内核并不会马上发送,可能会等待更多的字节组成一个数据包,这样可以提高I/O性能。但是在每次只发送很少字节的业务场景中,使用tcp_nodelay功能,等待时间会比较长

sendfile on配合使用(2)(3)使用但(2)(3)只能选其一特别注意
在主配置文件nginx.conf中配置

worker_processes  2;
worker_cpu_affinity 0101 1010;
error_log logs/error.log;
 
#配置Nginx worker进程最大打开文件数
worker_rlimit_nofile 65535;
 
user www www;
events {
    #单个进程允许的客户端最大连接数
    worker_connections  20480;
    #使用epoll模型
    use epoll;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #sendfile        on;
    keepalive_timeout  65;
    #访问日志配置
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
 
    #虚拟主机
    include /application/nginx/conf/extra/www.conf;
    include /application/nginx/conf/extra/blog.conf;
    include /application/nginx/conf/extra/bbs.conf;
    include /application/nginx/conf/extra/edu.conf;
    include /application/nginx/conf/extra/phpmyadmin.conf;
    include /application/nginx/conf/extra/status.conf;
 
    #nginx优化----------------------
    #隐藏版本号
    server_tokens on;
 
    #优化服务器域名的散列表大小 
    server_names_hash_bucket_size 64;
    server_names_hash_max_size 2048;
 
    #开启高效文件传输模式
    sendfile on;
    #减少网络报文段数量
    #tcp_nopush on;
    #提高I/O性能
    tcp_nodelay on;
}

原文地址
https://blog.51cto.com/u_13673885/2299769

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值