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 总结

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;
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号