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

Linux怎么调优vm.max_map_count为Elasticsearch预留足够内存映射

老晨同学_8960

老晨同学_8960

发布时间:2026-11-01 12:46:19

|

730人浏览过

|

来源于php中文网

原创

Elasticsearch 8.x 启动失败因 vm.max_map_count 默认值65530低于要求的262144,需通过 sysctl -w 临时调整或修改 /etc/sysctl.conf 永久生效,并配套设置 ulimit -n、ulimit -u 和 swapoff。

linux怎么调优vm.max_map_count为elasticsearch预留足够内存映射

为什么 Elasticsearch 启动报 vm.max_map_count 不足

Elasticsearch 8.x 默认要求 vm.max_map_count ≥ 262144,否则在 Bootstrap Checks 阶段直接退出,日志里明确出现:bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]。这不是警告,是硬性拦截——哪怕其他配置全对,这个值不够,进程就起不来。

根本原因是 ES 大量使用 mmap 加载索引文件(每个 segment、每个倒排文件都对应一个或多个 VMA),而默认内核值 65536 在中等规模集群下很快耗尽。注意:这和物理内存大小无关,只和进程能创建的虚拟内存区域数量有关。

临时调高 vm.max_map_count 立即生效

执行命令即可让当前运行的内核立刻接受新值:

sysctl -w vm.max_map_count=262144

验证是否生效:

sysctl -a | grep vm.max_map_count

常见误区:

  • sysctl -w 只影响当前会话,重启后失效
  • 必须用 root 权限执行,普通用户会提示 Permission denied
  • 如果容器里执行该命令,宿主机参数未改,容器重启后仍可能恢复旧值(取决于是否挂载 /proc/sys)

永久生效要改 /etc/sysctl.conf

编辑系统级配置文件,确保每次启动都加载:

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载
echo "vm.max_map_count = 262144" >> /etc/sysctl.conf

然后加载全部配置(不只是刚加的那行):

sysctl -p

关键检查点:

  • 确认没有拼写错误,比如写成 vm.max_map_count=262144(等号前后不能有空格)或漏掉 =
  • 某些发行版(如 CentOS Stream 9)可能需额外执行 systemctl restart systemd-sysctl 才能确保生效
  • 若用 Docker 部署,仅改宿主机 /etc/sysctl.conf 不够,还需在 docker run 时加 --sysctl vm.max_map_count=262144,或在 docker-compose.yml 的 sysctls 字段声明

别忘了配套调 ulimit -n 和关 swap

vm.max_map_count 不是孤立参数。Elasticsearch 同时依赖:

  • ulimit -n 65535:文件描述符上限,否则打开大量 shard 或 index 时触发 Too many open files
  • ulimit -u 4096:单用户最大进程/线程数,避免因并发线程过多被限制
  • swapoff -a:ES 明确禁止 swap,否则 GC 行为不可控;即使设了 bootstrap.memory_lock: true,swap 未关也会导致启动失败

这些限制在 systemd 服务中容易被忽略——ES 用 systemctl 启动时,ulimit 值默认继承自 systemd 全局设置,需在 /etc/systemd/system/elasticsearch.service.d/override.conf 中显式配置 LimitNOFILE=65535 和 LimitNPROC=4096。

真正容易被跳过的,是容器场景下对宿主机参数的双重确认:既要改 /etc/sysctl.conf,也要在容器启动时透传;既要设 vm.max_map_count,也不能漏掉 memlock 和 nofile 的 cgroup 限制。

热门AI工具

更多
WorkBuddy

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

DeepSeek

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

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

豆包大模型

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

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3548

2023.11.20

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

650

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

343

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

533

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

303

2025.11.27

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

4330

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3653

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2913

2023.06.30

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

100

2026.10.28

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 0.1万人学习

SQL优化与排查(MySQL版)
SQL优化与排查(MySQL版)

共26课时 | 3.3万人学习

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

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