内存占用风险在于缓慢爬升之后会触发 OOM 强制终止,在故障发生之前没有明显的迹象。预警机制应该包括指标、基线、告警以及处置这四个部分。

指标以 available 和 swap 为准,used 包括可回收缓存,单独参考容易出错,采样间隔为 15 秒到 1 分钟。基线按小时统计最近 30 天 P90 以及峰值,工作日和休息日分别建模,防止固定阈值造成持续误报。
告警分为两个级别。超过同桶基线1.2倍发出提示,达到物理内存85%升级为紧急,内容附带当前占用、增长斜率以及占用量前五的进程。轻度过载先采样保留现场,持续超限按预案扩容或者滚动重启,在重启之前导出堆栈。
机制上线之后要进行压力测试,超过阈值之后要验证告警时效和处置脚本的效果,并且定期复盘误报率。