已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
【背景】 做了 5 年运维。社区里"OOMKill 事前预警盯哪个信号"已经聊透了:#1905 把 working_set/request、working_set/limit 的比值和 page cache 误报讲清楚了,#1777 进一步论证 PSI memory.pressure full>0 是比 oom_kill 计数早 3~10s 的一等信号。我按这个结论去落地,结果在"选对了信号"之后撞上了一个大家似乎都没碰的卡点——信号本身的提前量只有秒级,而我的监控采样粒度是 15s,等于把提前量直接吃掉了,"预警"退化成了"事后通知"。
【现象(带数据)】
memory.pressure full>0 的起点,到 oom_kill 计数 +1,间隔约 6s;kubectl describe pod 已经是 OOMKilled。所谓"提前 6s 预警",在 15s 的采样面前约等于 0。【已尝试与结果】
【我现在的卡点 & 期望得到的答案形态】
memory.oom.group + 用户态 pre-oom hook。这些哪个真在生产跑过?成本到底多少?我知道这类问题没有唯一标准答案,但每个被 OOMKilled 坑过的运维都该撞过这道坎,想听听大家生产上真实的取舍,尤其是"为了多提前几秒,到底愿意多付多少采集成本"。