a13nDocs

管理会话与保留输出

管理守护进程就绪状态、会话生命周期、保留输出容量和传输。

Envd 管理一个设备代次及其多个独立会话。运维人员管理守护进程、进程和启动配置的生命周期;每个 EIP 会话管理自己的操作、进程、传输和保留输出。已连接的 socket 和保留输出预览都不是持久化的 agent 检查点。

确认就绪

  1. 创建私有运行时的父目录。
  2. 配置设备身份、默认工作目录、可执行文件策略、限制和传输通道。
  3. 启动守护进程并初始化设备连接;初始化不会创建会话。
  4. 检查设备描述符,按需浏览目录,无需打开会话。
  5. 打开新会话,设置固定的设备工作目录和必需方法。
  6. 在分派工作前确认就绪。
  7. 将设备代次和会话身份与操作证据一同保存,不要放入无关的全局进程映射。

已接纳会话的空闲 TTL 默认为 30 分钟。保活、断线宽限期和重新附加到完全相同的会话遵循设备声明的生命周期。重新连接传输通道不会重新附加会话,也不会恢复进行中的操作。

会话接纳和设备总配额限制并发。关闭一个会话只会清理其自身资源,其他会话不受影响。固定工作目录不是文件系统安全边界:会话可以访问执行账号和固定 Sandbox 授权允许的其他设备路径。彼此不信任的工作负载需要独立的外层账号、容器或沙箱边界。

使用 Python EIP 客户端管理设备归属、限定范围的会话、精确方法表、超时处理和描述符能力收窄。客户端和守护进程的默认超时可能不同。

守护进程启动前规划输出容量

独立运行时的输出默认值如下:

限制默认值
内联预览2 MiB
每条 stdout/stderr 流256 MiB
每个会话的 spool1 GiB
设备总 spool4 GiB

启动命令前,守护进程会为两条流 预留容量。按默认值,一对活跃输出流预留 512 MiB;两对流就可能在计入额外用量前耗尽 1 GiB spool。保留记录还会进一步占用容量。缩小预览不会减少这份预留。

因此,busy 响应可能表示输出预留容量不足,而非 CPU 或网络故障。有限输出上限不代表允许驱逐其他保留记录。可以有计划地提高配额、释放不再需要的观测记录,或降低每条流的预留值,同时保持 spool >= 2 * per_stream 和 preview <= per_stream。

Python Local Envd 通过 Host 启动配置提供自己的预览和文件值默认设置。Docker 环境 provider 不使用 Envd,并有自己的输出限制。请配置相应的运行时字段,不要把会话选择当作守护进程启动配置。

预览、保留字节与完成状态

命令结果或进程读取可能只返回预览。通过限定偏移量或游标读取其保留输出引用,并保留可用范围、来源、完成标志和截断证据。

  • 命令完成不等于输出已完整交付。
  • 读到当前保留内容末尾不一定意味着生产方 EOF。
  • 重复读取不会消费保留内容,也不会恢复已省略的字节。
  • 检查进程不代表已附加输出,也不会重置保留预算。
  • 不再需要进程或输出观测记录时,使用对应 EIP 方法显式释放。释放不等于终止正在运行的命令。

输出需要在守护进程或会话保留期之后仍可访问时,使用应用管理的文件或其他持久日志目标。不要把私有 spool 当作应用存储 API。

传输与结果不确定的命令

通过传输 API 写文件需要显式提交。关闭或放弃 writer 不代表文件已成功发布。中止未完成的传输,并通过回执和重放证据区分未分派、已知完成和结果未知。

分派后的超时或传输断开不能证明写入或命令未执行。重放类别允许核对结果时,保留原操作身份。绝不能因为缺少确认就盲目重新启动 shell 命令。

会话丢失与守护进程代次丢失是不同情况。本地句柄过期后,provider 的远程目标(例如云沙箱)可能仍存在;新代次会使绑定旧代次的句柄和输出选择器失效。provider 状态可以识别目标,但无法重建已丢弃的进程输出,也不能自动恢复所有命令。

客户端与会话的优雅关闭,以及 provider 的进程清理,各自遵循其资源归属规则。不要用关闭守护进程代替产品层的执行中断,也不要假定突然终止已交付最终清理证据。

在正确的层面排查失败

现象检查项
初始化或会话接纳返回 busy设备会话容量、总配额、待完成清理和空闲过期
缺少必需方法必需方法选择、守护进程账号权限和可执行文件策略
启动命令前返回 busy 或配额错误每对输出流的预留容量和保留 spool 用量
预览不完整返回的引用与范围,以及生产方和完成状态证据
文件系统或命令访问被拒绝守护进程账号权限,以及 Host 的外层边界(执行边界)
命令或写入结果未知原操作回执及其重放/核对类别;不要作为新意图重试
远程目标不可用provider/后端访问和精确的已保存目标身份,不要回退到其他挂载

守护进程不提供通用健康检查、浏览器或任意 HTTP 端点。HTTP EIP 提供经过身份验证的控制和传输路由;就绪检查是 EIP 操作。诊断信息不能写入 stdio 协议 stdout。配置定义传输通道和启动字段,执行边界介绍 Host 管理的隔离。

本页目录