告警含義
-
當出現 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 累積閾值 只是舒緩報警,無法解決問題 |