Nginx 中怎么测试 sendfile 零拷贝在静态资源服务器上的加速效果

阿丽小哥_7903

阿丽小哥_7903

2026-10-09

679人浏览

原创

要确认 sendfile 是否真正起效,需通过 strace 观察 sendfile64 系统调用是否被调用,并结合 cpu 降低、延迟缩短、qps 提升等指标验证,同时排查文件系统、nginx 模块及响应头等零拷贝前提条件,并配合 tcp_nopush 优化网络包发送。

nginx 中怎么测试 sendfile 零拷贝在静态资源服务器上的加速效果

要确认 sendfile 是否真正起效并带来加速,不能只看配置写了 sendfile on,必须从运行时行为和系统指标两个层面交叉验证。实测中常见“配置开着但实际没走零拷贝路径”的情况,关键在于观察内核是否真的调用了 sendfile64 系统调用,以及 CPU、延迟、吞吐是否出现符合预期的变化。

用 strace 实时抓取系统调用路径

这是最直接、最可靠的验证方式,能明确看到 Nginx worker 进程是否在走零拷贝路径:

  • 先找一个活跃的 worker 进程 PID:pgrep nginx | head -1
  • 用 strace 监控其 sendfile、read、write 调用:strace -p PID -e trace=sendfile64,read,write -f 2>&1 | grep -E "(sendfile64|read|write)"
  • 同时发起请求(如 curl http://your.site/logo.png),观察输出:若持续看到 sendfile64( 调用,且几乎不出现 read( 和 write(,说明零拷贝生效;若大量出现 read+write 组合,则已退化为传统路径

对比开启/关闭 sendfile 的性能指标变化

在相同压测条件下(例如 wrk -t4 -c100 -d30s),关闭 sendfile 后再开启,观察三类硬指标是否出现显著改善:

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载
  • CPU 使用率下降:特别是 sy(系统态)占比应明显降低,典型降幅为 35%~50%,因为绕过了用户态拷贝和频繁上下文切换
  • 响应延迟缩短:1MB 静态文件在千兆网络下,P95 延迟通常从 8–12ms 降至 2–4ms
  • QPS 提升:实测提升约 2.1 倍(如从 14,000 → 29,500),尤其在高并发、大文件场景下更明显

检查是否满足零拷贝前提条件

即使 strace 显示了 sendfile64,也要排查以下常见失效点,否则加速效果会打折扣或完全丢失:

  • 确认文件是本地 ext4/XFS 文件系统上的普通文件,大小 ≥ 4KB,未被其他进程加锁或以 O_DIRECT 方式打开
  • 确保未启用 gzip on、sub_filter、proxy_pass 或 alias 指向 NFS/FUSE 路径
  • 检查响应头是否含 Content-Length:缺失该头会导致 Nginx 回退到 chunked 编码,无法使用 sendfile

配合 tcp_nopush 观察网络包行为

sendfile 单独开启效果有限,需与 tcp_nopush on 协同才能体现批量传输优势:

  • 用 tcpdump -i any port 80 -w sendfile.pcap 抓包,对比开启/关闭 tcp_nopush 时的 TCP 包数量和大小
  • 开启后,应看到更少的小包、更多满载 MTU(如 1448 字节)的数据段,说明 sendfile 数据被有效攒包发送

相关专题

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

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

2023.08.15

437

5

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

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

2023.09.08

900

5

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

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

2023.09.19

2752

5

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

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

2023.10.09

916

5

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

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

2023.10.17

829

5

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

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

2023.10.17

414

3

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

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

2023.10.18

2496

4

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

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

2023.10.20

4632

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

747

5

热门下载

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

精品课程

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

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习