<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>cgroup on </title>
    <link>/tags/cgroup/</link>
    <description>Recent content in cgroup on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sun, 30 Aug 2026 06:45:00 +0800</lastBuildDate><atom:link href="/tags/cgroup/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>容器内存 99% 但没有 OOM：可能是页缓存</title>
      <link>/posts/memory-alert-page-cache-false-alarm/</link>
      <pubDate>Sun, 30 Aug 2026 06:45:00 +0800</pubDate>
      
      <guid>/posts/memory-alert-page-cache-false-alarm/</guid>
      <description>2026-08-29 15:49，监控发来一条 ContainerMemoryNearLimit（全文时刻都是 UTC）：homelab 的 Prometheus 容器 7 天内存峰值 3055Mi，limit 是 3Gi，占 99.45%。告警正文里那句「一次尖峰就会 OOMKill，而 OOM 后干净重启、无人察觉」是我自己写的。
但经历那个峰值的容器，自己的终止状态是这样：
{ &amp;#34;startedAt&amp;#34;: &amp;#34;2026-08-29T15:09:21Z&amp;#34;, &amp;#34;finishedAt&amp;#34;: &amp;#34;2026-08-29T15:33:22Z&amp;#34;, &amp;#34;exitCode&amp;#34;: 0, &amp;#34;reason&amp;#34;: &amp;#34;Completed&amp;#34; } 它活过了峰值，24 分钟后正常退出——紧接着就是 15:35 的第二次节点重启。拆开看，3055Mi 里约 87% 是页缓存（page cache），同一时刻 RSS 只有 408Mi。后来的对照实验里，什么都不改，只挑页缓存热的时候把它再重启一次，峰值 728Mi（23.70%），差了 4 倍多。
下面按排查顺序写，数字都是当时取的。
背景 这套 homelab 监控用的是 kube-prometheus-stack。Prometheus 跑在一台由笔记本改成的 Proxmox 宿主上的 K3s VM 里，memory limit 3Gi、requests 512Mi。
这条告警上一次响在 08-16，原因是 k3s 单进程把同一批 apiserver/etcd 指标重复暴露，active series 太多（那次的处理记在把重复 series 拦在入库前：我的 Prometheus 内存瘦身）。砍完 series 之后，max_over_time[7d] 还记着旧峰值。我挂了一条 7 天的 Alertmanager 静默（silence）等窗口滚过去，也在 values 文件里给自己留了一句注释：到期后仍然报，就别再续静默，去查原因。</description>
    </item>
    
  </channel>
</rss>
