内核参数vm.swappiness检查
巡检规则
本文中提及的 RocketMQ Copilot 术语是 AutoMQ Copilot for RocketMQ 的简称,均特指安托盟丘(杭州)科技有限公司面向 Apache RocketMQ 设计实现的消息队列智能辅助运维系统。
检测数据源
内核参数vm.swappiness检查的检测数据源是目标集群的操作系统信息,通过读取目标集群的操作系统配置,判断是否存在风险。
检测周期
- 每 10 分钟一次。
- 不可关闭。
异常检测逻辑
内核vm.swappiness参数 !=1,则产生异常事件。
事件和风险
RocketMQ Copilot 系统巡检会对检测不通过的规则产生异常事件和风险,异常事件遵循 概述▸ 。
异常事件
- 异常事件类型:copilot:cluster:BrokerKernelParamsVmSwappinessInspectionFailed
- 关于事件的详细 schema 定义,异常事件:内核 swappiness 配置过大▸ 。
异常风险
- 关联的风险类型:内核 swappiness 配置过大。
风险分析
vm.swappiness 取值范围为 [0, 100],默认为 60,一个较小的值意味着内核会尽量避免使用 swap 空间,较大的值则意味着内存会尽量使用 swap 空间。
Broker 节点上 vm.swappiness 的值调得太大会导致 swap 时与 Broker 存在激烈的磁盘 IO 争抢。
在 Broker 启动前,通过执行 os.sh 中将 vm.swappiness 设置为 1。在 Linux Kernel 3.5 和以上版本,1 表示最小程度地使用 swap 空间,但是并不会完全禁用。
不要将 vm.swappiness 设置超过 10。
运维建议
建议 1:生产环境集群建议部署前执行 os.sh脚本优化内核参数
RocketMQ 安装脚本提供了内核参数调优脚本,生产集群部署时建议执行并优化参数。
建议 2:生产环境集群建议使用相同的调优完成的操作系统镜像部署
生产环境建议使用统一的调优完成的操作系统镜像,避免部分节点出现参数遗漏。