48 Nginx静态资源优化配置之tcp_nopush和tcp_nodelay

48 Nginx静态资源优化配置之tcp_nopush和tcp_nodelay

48.1 tcp_nopush

tcp_nopush:必须在 sendfile 打开状态下才会生效,主要用于提升网络包的传输效率

语法 tcp_nopush on | off;
默认值 tcp_nopush off;
位置 http 、server 、location

 

 

 

 

48.2 tcp_nodelay

tcp_nodelay:必须在 keep-alive 打开状态下才会生效,主要用于提升网络包传输的实时性

语法 tcp_nodelay on | off;
默认值 tcp_nodelay on;
位置 http 、server 、location

 

 

 

 

48.3 总结

1587832596733

nopush:不推送,存满再发,保证效率

nodelay:不延迟,有数据就发,保证实时

 

经过分析,"tcp_nopush"和”tcp_nodelay“看起来是"互斥的",但现在可以将这两个参数都打开,在linux2.5.9+的版本后两者可以兼容,三个指令都开启的好处是,sendfile 开启可以保证高效的文件传输模式,tcp_nopush 开启可以确保在发送到客户端之前数据包已经充分“填满”, 这大大减少了网络开销,并加快了文件发送的速度。 并且,当到达最后一个可能因为没有“填满”而暂停发送的数据包时,Nginx会忽略 tcp_nopush 参数, 然后使用 tcp_nodelay 强制套接字发送数据。由此可知,tcp_nopush 可以与 tcp_nodelay 一起设置,它比单独配置 tcp_nodelay 具有更强的性能

    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout  65;

 

———————————————————————————————————————————————————————————————————————————

                                                                                                                         无敌小马爱学习

posted on 2026-05-13 16:01  马俊南  阅读(8)  评论(0)    收藏  举报