告警含义
-
当出现 Client failing to respond to cache pressure 警告时,表明:
- 元数据服务器 (MDS) 要求客户端释放缓存的元数据(如 inode Capabilities)
- 客户端未能及时响应 释放请求
核心触发机制
MDS 通过以下周期性流程管理缓存
阶段 | 操作 | 触发条件 |
---|---|---|
Cache Trim 周期 | 每隔 mds_cache_trim_interval 周期则执行缓存回收 | 自动触发 |
Recall Client State | 检测每个 Client Session 是否需要释放 Capabilities | 参考下文解释 |
告警触发 | 当客户端在 mds_recall_state_timeout 内未响应召回请求 | 超时阈值默认 60 秒 |
Recall Client State 触发条件
MDS 会检测 session 满足以下面条件就可以触发客户端 recall caps
- 1 缓存达到|mds_cache_memory_limit
- 2 Capabilities 数量超过 mds_max_caps_per_client
- 3 客户端处于 inactive 状态
caps 回收逻辑
- MDS每秒向客户端发送一次recall_caps请求
- 每次请求量 = min(当前caps数 - mds_min_caps_per_client, mds_recall_max_caps)。
默认值:
- mds_recall_max_caps = 30,000(单次最大回收量)
累积监控值
- MDS维护会话级指标 recall_caps,记录 过去1分钟内累计发送的recall_caps总量。
- 若客户端释放速率不足,该值会持续叠加。
当 session 中 client 的 recall_caps累积值超过该阈值时,
系统报告此告警 failing to respond to cache pressure
关键影响
风险等级 | 后果 |
---|---|
高 | MDS 内存溢出导致服务重启 |
严重 | 文件系统完全阻塞 |
客户端问题根源分析
操作负载压力
场景 | 典型案例 | 影响 |
---|---|---|
高并发元数据操作 | 大规模目录遍历 (find / -type f) | 客户端缓存压力指数级增长 |
小文件密集型读写 | AI 训练数据集访问 | Caps 回收速率低于产生速率 |
内核兼容性问题
风险版本 | 问题类型 |
---|---|
内核版本 < 4.18 | 存在 CephFS 客户端缓存回收漏洞 |
未修补的定制内核 | Caps 回收机制异常 |
sanpshot crash | 之前使用 5.10.134-16.1.3 版本,遇到 MDS 故障后物理机 crash 升级至 5.10.134-18.0.1 解决问题 |
关键调优参数
参数 | 默认值 | 优化建议 | 作用 |
---|---|---|---|
mds_recall_warning_threshold | 262144 | 864000 | 触发告警的未释放 Capabilities 累积阈值 只是舒缓报警,无法解决问题 |