首页/系统/Linux 内核与性能调优速查/vm.max_map_count 内存映射数量上限
sysctl 内核参数72 条

vm.max_map_count 内存映射数量上限

限制单个进程可持有的内存映射区域数(默认 65530);搜索引擎、JVM、游戏服务器等大量 mmap 的应用常需要提高。

参数vm.max_map_count
默认值65530
典型症状mmap 返回 ENOMEM(应用报 Cannot allocate memory)

查看与调整

查看与调整
sysctl vm.max_map_count
sysctl -w vm.max_map_count=262144
# 持久化:/etc/sysctl.d/99-map-count.conf
Elasticsearch 等产品的公开文档明确要求将该项提升到 262144,用于支撑 mmapfs 目录访问。

易错点

  • 容器场景要确认修改层级:宿主 sysctl 与容器内可见值可能不同,特权与非特权容器行为也有差异
  • 报告 Cannot allocate memory 时先看 /proc/<pid>/maps 行数是否逼近上限,再判断是虚拟地址还是物理内存问题

数据来源与参考

  • Linux 内核 Documentation/admin-guide/sysctl/vm.rst
  • Elasticsearch 官方文档(虚拟内存设置)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌