it编程 > 数据库 > Redis

NGINX tcp_nopush on的指令用法

37人参与 2026-07-20 Redis

是 nginx 配置中 tcp_nopush 指令的用法。

tcp_nopush on; 的作用

tcp_nopush 是 linux 系统下的 tcp 选项(tcp_cork),在 nginx 中配合 sendfile 使用:

表格

配置组合效果
sendfile on; + tcp_nopush on;开启 sendfile 后,数据不会立即发送,而是累积到 一个完整的数据包 后再发送,减少网络包数量
sendfile on; + tcp_nopush off;每产生一点数据就立即发送,可能产生大量小数据包

典型配置场景

http {
    sendfile        on;      # 使用内核态零拷贝发送静态文件
    tcp_nopush      on;      # 防止 sendfile 产生大量小数据包
    tcp_nodelay     on;      # 对动态内容/实时数据立即发送(与 tcp_nopush 不冲突)
    # 静态文件服务
    server {
        location /static/ {
            # 这里 sendfile + tcp_nopush 配合效果最好
        }
    }
}

工作原理

tcp_nopush on 时:
  数据 ──→ 缓冲区累积 ──→ 凑满一个 mss (最大报文段) ──→ 一次性发送
         (减少包头开销,提高吞吐量)
tcp_nopush off 时:
  数据 ──→ 立即发送 ──→ 可能产生大量小包 ──→ 网络效率低

注意事项

你的配置 tcp_nopush on; 是 推荐的标准做法,特别是在高并发静态文件服务场景下。

到此这篇关于nginx tcp_nopush on的指令用法的文章就介绍到这了,更多相关nginx tcp_nopush on内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Redis集群重置步骤详解:如何删除节点文件并重新创建集群?

07-20

Django Celery Redis异步发邮件怎么做?完整配置教程分享

07-21

Django中如何配置Kafka消息队列实现异步任务处理?

07-21

Redis突发缓存穿透的一次完整定位复盘指南

07-21

Redis集群选举机制是什么?为什么至少需要三个master节点?

07-19

Redis性能测试工具有哪些?redis-benchmark使用指南

07-19

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论