Skip to Main Content

内核参数vm.max_map_count检查

巡检规则

本文中提及的 RocketMQ Copilot 术语是 AutoMQ Copilot for RocketMQ 的简称,均特指安托盟丘(杭州)科技有限公司面向 Apache RocketMQ 设计实现的消息队列智能辅助运维系统。

检测数据源

内核参数vm.swappinp_coess检查的检测数据源是目标集群的操作系统信息,通过读取目标集群的操作系统配置,判断是否存在风险。

检测周期

  • 每 10 分钟一次。
  • 不可关闭。

异常检测逻辑


内核vm.max_map_count参数 \< 655350,则产生异常事件。

事件和风险

RocketMQ Copilot 系统巡检会对检测不通过的规则产生异常事件和风险,异常事件遵循 概述▸

异常事件

异常风险

  • 关联的风险类型:内核文件映射数过小。

风险分析

vm.max_map_count 参数表示一个进程可以拥有的最大内存映射区域(VMA)的数量。

RocketMQ 大量使用 mmap 对 CommitLog 和 ConsumeQueue 进行内存映射。而且线程的创建也需要使用 mmap,都与 vm.max_map_count 有关。

vm.max_map_count 设置得太小,Broker 在执行 mmap 时可能会失败,增开线程和对文件进行映射都会有问题,进而导致 Broker 不可用。

在 Broker 启动前,通过执行 os.sh 中将 vm.max_map_count 设置为 655360,建议不要进行修改。

运维建议

建议 1:生产环境集群建议部署前执行 os.sh脚本优化内核参数

RocketMQ 安装脚本提供了内核参数调优脚本,生产集群部署时建议执行并优化参数。

建议 2:生产环境集群建议使用相同的调优完成的操作系统镜像部署

生产环境建议使用统一的调优完成的操作系统镜像,避免部分节点出现参数遗漏。