讲师中心 微信公众号
AI工具推荐 视频效率加速

Nginx `sendfile`高并发下载视频流时的网卡和内存占用优化

风敏君_4564

风敏君_4564

发布时间:2026-09-22 11:25:47

|

994人浏览过

|

来源于php中文网

原创

sendfile 在高并发视频下载中需网卡 SG-DMA、内存 page cache 优化与 Nginx 配置协同才能实现零拷贝:确认 ethtool 散列开启、调优 vm 参数、限制 worker 内存锁、location 精确启用并验证 strace/perf 运行时行为。

nginx `sendfile`高并发下载视频流时的网卡和内存占用优化

在高并发视频流下载场景下,sendfile 是降低 CPU 和内存压力的核心机制,但它能否真正发挥效能,高度依赖网卡能力与内存路径的协同优化。单纯开启 sendfile on 并不能自动解决网卡打满或内存缓冲堆积问题——必须从内核、网卡驱动、Nginx 配置三者联动入手。

网卡需支持 SG-DMA 并启用硬件卸载

Linux 2.4+ 内核的 sendfile 要实现“近乎零 CPU 拷贝”,前提是网卡支持 Scatter-Gather DMA(SG-DMA),即允许网卡直接从内核页缓存(page cache)读取分散的数据块,无需 CPU 组包。

  • ethtool -k eth0 | grep scatter-gather 确认输出为 scatter-gather: on;若为 off,需更新驱动或启用对应内核模块(如 ixgbeigb
  • 同时开启 TCP 卸载:检查 ethtool -k eth0tx offloadrx offloadtcp-segmentation-offload 是否均为 on;TSO/GSO 可减少协议栈分段开销,配合 sendfile 提升大包吞吐
  • 避免使用虚拟网卡(如 Docker bridge、VMware NAT)直连生产流量——它们通常不透传 SG-DMA 能力,建议改用 macvlan、SR-IOV 或 host 网络模式

内存层面要规避 page cache 拥塞与 swap 干扰

sendfile 依赖内核 page cache 加速磁盘读取,但高并发大文件读取易引发 page cache 压力,表现为 kswapd 活跃、pgpgin/pgpgout 指标飙升,甚至触发 swap。

Nginx Config Linter
Nginx Config Linter

对 Nginx 配置文件进行语法检查、验证和安全、性能审计。

下载
  • 调大 vm.vfs_cache_pressure=50(默认 100),降低 dentry/inode 缓存回收优先级,让 page cache 更稳定
  • 限制单个 worker 进程可锁定的内存页:在 nginx.confworker_rlimit_coreworker_rlimit_memlock 中设合理上限(如 worker_rlimit_memlock 2G;),防止 page cache 被其他进程挤占
  • 禁用 swappiness:vm.swappiness=1,避免空闲内存被轻易换出,保障 sendfile 所需的热页常驻

Nginx 配置必须堵住所有退化路径

即使网卡和内存就绪,Nginx 仍可能因配置疏漏退回 read/write 模式,导致 CPU 翻倍、内存拷贝激增。

  • 只在视频 location 中启用:location ~ \.(mp4|webm|mov|mkv)$ { sendfile on; tcp_nopush on; tcp_nodelay off; gzip off; }
  • 确保响应含 Content-Length:对 NFS/CIFS 存储的视频,需确认其文件系统支持 stat() 快速获取大小;否则 Nginx 会降级为 chunked,禁用 sendfile
  • 关闭干扰模块:显式设置 etag off;expires off;(改用 add_header Cache-Control "public, immutable";),避免响应头动态生成介入用户态

验证是否真正在走零拷贝路径

不能只看配置,要观察运行时行为:

  • strace -e trace=sendfile -p $(pgrep -f "nginx: worker") -s 128 持续抓取,应高频出现 sendfile(…) 调用,而非 read(…) + write(…)
  • 监控 /proc/net/snmpTcpOutSegsTcpOutDataSegs 比值:启用 tcp_nopush 后,后者占比应显著升高(说明数据包有效载荷率提升)
  • perf top -p $(pgrep nginx) -e syscalls:sys_enter_sendfile 查看 sendfile 系统调用耗时占比,若低于 5%,说明路径高效

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

417

2023.08.15

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

820

2023.09.08

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2392

2023.09.19

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

816

2023.10.09

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

709

2023.10.17

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

374

2023.10.17

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2136

2023.10.18

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

3932

2023.10.20

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

0

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn