Nginx 使用 mmap 提升读取性能的原理

落强君_7499

落强君_7499

2026-06-17

272人浏览

原创

nginx本身不直接启用mmap,但可通过关闭sendfile、启用aio及优化open_file_cache,使小中型静态文件(≤128mb)按需映射至虚拟内存,实现零拷贝、页缓存共享与缺页加载,显著提升读取性能。

nginx 使用 mmap 提升读取性能的原理

Nginx 使用 mmap 提升静态文件读取性能,核心在于绕过传统 I/O 的数据拷贝和系统调用开销,让文件内容“直接可见”于进程地址空间。

mmap 如何加速 Nginx 静态文件服务

Nginx 默认不启用 mmap,但可通过配置 sendfile off; + aio on;(部分场景)或更直接地配合 open_file_cache 与底层内核行为协同;真正发挥 mmap 效能的典型路径是:当 Nginx 以 mmap 方式打开并映射小至中等尺寸的静态文件(如 CSS、JS、图标)时,它不再调用 read() 逐块读取,而是将文件页按需映射进虚拟内存。后续对文件的访问(例如发送响应体)可直接通过内存指针操作——内核自动将缺页触发的磁盘加载与页缓存复用整合进来。

  • 文件首次被 mmap() 映射时,内核只建立虚拟内存区域(VMA),不加载数据
  • 第一次读取某一页时触发缺页中断,内核从磁盘加载该页到页缓存,并映射到用户空间虚拟地址
  • 后续访问同一页面无需拷贝,CPU 直接读取页缓存中的内容,实现零拷贝
  • 多个 worker 进程映射同一文件时,共享底层物理页缓存,降低内存占用

适用条件与实际限制

Nginx Config Linter
Nginx Config Linter

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

下载

Nginx 并非对所有文件都启用 mmap,是否使用取决于文件大小、mmap 配置策略及内核支持:

  • 文件必须小于 mmap 的安全阈值(通常建议 ≤ 128MB),过大可能引发虚拟内存碎片或 OOM
  • 需满足页对齐:offset 和 length 均需是 getpagesize() 的整数倍,否则映射失败或行为未定义
  • mmap 映射的文件在 munmap 前持续占用 VMA 资源,频繁映射/解除映射会增加内核开销
  • 若启用了 sendfile(默认开启),Nginx 优先走内核零拷贝路径(sendfile() 系统调用),此时 mmap 不生效——二者互斥

如何在 Nginx 中间接利用 mmap 优势

虽然 Nginx 没有暴露 mmap 的显式开关,但可通过以下方式使其更倾向使用内存映射类行为:

  • 关闭 sendfile(sendfile off;),启用 aio threads; 或 directio,为 mmap 创造执行路径
  • 设置 open_file_cache max=10000 inactive=60s;,提升文件句柄与元数据缓存命中率,减少重复 open/mmap
  • 对热静态资源(如前端构建产物),确保其驻留页缓存:可用 posix_fadvise(fd, 0, 0, POSIX_FADV_WILLNEED) 预热(需定制模块或内核支持)

不复杂但容易忽略

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

2023.08.15

437

5

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

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

2023.09.08

880

5

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

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

2023.09.19

2612

5

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

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

2023.10.09

876

5

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

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

2023.10.17

769

5

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

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

2023.10.17

394

3

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

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

2023.10.18

2356

4

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

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

2023.10.20

4352

4

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

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

2023.10.20

707

5

热门下载

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

精品课程

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

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习