Skip to content

[CRITICAL] OutlinePodOOMKilled #47

Open

Description

@Wyifei

Severity: critical
Status: firing
Summary: Outline pod outline-web-8795c86-rk72r OOM Killed

Activity

  1. Wyifei commented on May 28, 2026

    @Wyifei
    OwnerAuthor

    DevOps Agent 调查已创建

    • 优先级: HIGH
    • Task ID: e5a2f8fc-25f0-4d28-907e-e96437631ce7

    👁 在 Operator Web 中查看调查

    调查正在排队...

  2. Wyifei commented on May 28, 2026

    @Wyifei
    OwnerAuthor

    DevOps Agent 调查进行中

    • 优先级: HIGH

    👁 在 Operator Web 中查看调查

  3. Wyifei commented on May 28, 2026

    @Wyifei
    OwnerAuthor

    ✅ DevOps Agent 调查完成

    • 优先级: HIGH

    👁 在 Operator Web 中查看调查


    根因摘要

    Investigation Summary

    Symptoms

    outline-web-8795c86-rk72r Pod 反复 OOM Killed

    Description: Pod outline-web-8795c86-rk72r(ReplicaSet 8795c86)在启动后立即被 OOM Killed。容器每次启动后约 4 秒就因内存耗尽被终止(Exit Code 137),已重启 5 次。当前处于 CrashLoopBackOff 状态。内存配置:Request 180Mi, Limit 200Mi。容器使用镜像 docker.getoutline.com/outlinewiki/outline:latest (sha256:361df704)。
    Time: 2026-05-28T08:46:52Z

    outline-web-8795c86-rk72r Pod 进入 CrashLoopBackOff 状态

    Description: Pod outline-web-8795c86-rk72r 在被 OOM Killed 后进入 CrashLoopBackOff 状态。Kubernetes 尝试重启容器,但由于内存配置不足(200Mi limit),每次重启后约 4 秒就再次触发 OOM,导致持续的崩溃-重启循环。已重启 5 次,当前处于 Back-off 等待状态。
    Time: 2026-05-28T08:46:52Z

    Findings

    Cause: Deployment 配置的内存限制不足以启动 Outline 容器

    Description: outline-web Deployment(revision 25)当前配置的内存限制为 200Mi(Request 180Mi),远低于应用启动所需的内存。正常运行的旧 Pods(ReplicaSet 588f4876cc)使用的是 Memory Limit 1Gi / Request 512Mi 的配置。新 Pod 在启动过程中(约 4 秒)就达到 200Mi 限制被 OOM Killed(Exit Code 137),无法通过 Readiness probe(delay 20s),导致滚动更新卡住。旧的 3 个 Pods 继续运行提供服务,但 Deployment 反复尝试创建新 Pod(过去 3 天 23 小时内已尝试 6 次)。
    Cascades to: s1-oom-killed, s2-crash-looping

    Cause: 实际内存使用量证实 200Mi 配置完全不足

    Description: 通过 Grafana Prometheus 查询过去 7 天的数据,正常运行的 3 个 outline-web Pods(ReplicaSet 588f4876cc)的内存使用情况:平均 501-632 MiB,峰值达到 684 MiB,当前运行值在 524-685 MiB。200Mi 的限制仅为实际使用量的 29-40%,远低于应用正常运行所需。当前配置(Limit 1Gi / Request 512Mi)为峰值使用提供了合理的 340 MiB 安全余量(33% buffer)。Pods 启动初期仅使用 2-3 MiB,但在正常运行后迅速增长到 500+ MiB。
    Cascades to: c1-insufficient-memory

    Supporting Observations

    • Outline Web Pods 过去 7 天内存使用情况分析: 通过 Grafana Prometheus 查询发现,当前运行的 3 个 outline-web-588f4876cc-* Pods 在过去 7 天内的内存使用情况:平均内存使用量在 525-663 MB 之间 (502-632 MiB),最大值达到 577-717 MB (550-684 MiB),最小值仅 2.5-3 MB (启动初期)。当前运行时的实际内存使用量普遍在 600-685 MB (572-653 MiB) 范围内。这远远超过了 200Mi 的限制,而当前配置的 1Gi Limit 和 512Mi Request 是合理的。200Mi 限制将导致立即 OOMKilled。

    Root Cause: 用户通过 kubectl patch 错误修改了 Deployment 内存配置

    Description: EKS 审计日志显示,用户 yifeiwf (arn:aws:sts::870414140965:assumed-role/yifeiwf/yifeiwf-Isengard) 在 2026-05-24 09:01:38 UTC 通过 kubectl v1.34.2 客户端执行 PATCH 操作修改了 outline-web Deployment。该操作创建了新的 ReplicaSet 8795c86(revision 25),将内存配置从 Limit 1Gi / Request 512Mi 错误降低到 Limit 200Mi / Request 180Mi(分别降低 80% 和 65%)。该用户在短时间内(08:51-09:02)执行了 5 次 PATCH 操作,表明可能是在进行调试或测试。操作来源 IP 120.245.16.184。此手动操作绕过了 Terraform 管理流程(Deployment 标签显示 managed-by=terraform),可能导致配置漂移。
    Cascades to: c1-insufficient-memory

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    criticalincidentIncident trigger for DevOps Agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions