> ## Documentation Index
> Fetch the complete documentation index at: https://starforge.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 运维排障

> 那些症状指向的地方和真正原因不在一处的故障。

按「症状有多容易把人引到错误方向」排序。

## 仪表盘上有空闲 GPU，作业却一直排队

| 查什么  | 因为                                                                                       |
| ---- | ---------------------------------------------------------------------------------------- |
| 用户配额 | 并发 GPU、并发作业，或每日 GPU-时。排队的作业是被准入了的；被拒的作业没有                                                |
| 时段窗口 | `FORGE_SCHEDULE_ENFORCE` 打开，而那个卡型的窗口关着                                                   |
| 磁盘水位 | `FORGE_DISK_WATERMARK_PCT` 会完全停止出队，以保护正在跑的作业                                             |
| 饿死   | 大作业反复被拒，而排在它后面的小作业不断抢走刚释放的容量。`FORGE_SCHED_RESERVE_AFTER_S` 就是用来止住这件事的；它是 0 的话队列会无限期饿死大作业 |

饿死这一种最像 bug。控制台永远显示「等待容量」，而制造这个流的正是平台自己——
lifecycle 作业和 Playground 会话各占一张卡，于是四卡作业每一轮都被跳过。

## 训练能起来但慢得离谱，或者卡在 all-reduce

多网卡机器上 `FORGE_K8S_NCCL_SOCKET_IFNAME` 没设，NCCL 挑错了网卡。
没有任何报错——只有很差的吞吐或者一次挂起。常见值是 `bond0`、`eth0`、`ib0`。

## 集群起来了但 worker 注册不上

`FORGE_KUBERAY_RAY_VERSION` 和训练镜像里的 Ray 版本不一致。
唯一的线索是一行版本不匹配的警告，很容易淹没在启动输出里。

## 稍大一点的 batch 就 OOM

`/dev/shm` 还是容器默认的 64MB，而 Ray 的 object store 就在那里。
改 `FORGE_K8S_SHM_SIZE` 或 `FORGE_LOCAL_SHM_SIZE`，并记住它由内存支撑——
它加上内存上限不能超过物理内存。

## 多节点 run 续不上

`FORGE_K8S_STORAGE_SHARED` 是 true，但 PVC 是 RWO。RWO 不会让作业直接失败——
它给每个 Pod 各自一个卷，于是 checkpoint 分片散落在不同节点上。
执行器的健康检查会把声明值和实际 PVC 核对，去读那个结果。

## 所有后台任务都停了

没有 Redis。后台角色需要一把共享锁，避免多个副本同时跑同一个任务。
单实例：可以接受。多副本：存储记账、诊断和每日日报根本没在跑。

## 权重下载卡住，或者失败在一个响应体里只有 URL 的 400 上

镜像的问题，或者 Xet。见[离线内网部署](/zh-Hans/ops/airgapped)。

## 日志在滚但曲线是空的

Ingest。确认 `FORGE_INGEST_URL` **从 worker 节点**可达，而不是从你的笔记本——
那里的 `127.0.0.1` 是 worker 自己的回环。自定义训练器的话，
确认 [`starforge.report`](/zh-Hans/api-reference/python-sdk) 真的被调用了。

## 重启之后所有人都掉线了

`FORGE_WEB_JWT_SECRET` 没设，所以每个进程各生成一把。设一个固定的强随机值。
副本多于一个时，这还意味着一个副本签的 token 会被其他副本拒绝。

## GPU 长期显示「不可调度」

健康检查发现了 ECC 待退页、未纠正错误或硬件降频——或者有平台之外的进程占着这张卡。
容量视图会说明是哪一种。这类故障在任何地方都不报错；它们只产出坏结果或者悄悄变慢，
这正是这项检查存在的理由。

## 存储配额显示「未统计」

`FORGE_STORAGE_SCAN_INTERVAL_S` 是 0，或者扫描角色没在跑。
大目录树上一次完整扫描要几分钟，所以它是后台角色而不是请求时现算。

## 某个环境在准入时被拒

要么它需要沙箱而部署没配，要么它是 `openenv-image`——这套部署有意不托管它。
在准入时拒绝而不是在 launcher 里拒绝，意味着你在花掉一次资源分配之前就知道了。
