活跃、浅休眠和深休眠分别是什么?
活跃状态表示 Sandbox 正在运行,适合持续执行命令、保持服务端口、处理交互式任务或承载 longrun 任务。
浅休眠用于在保留 Sandbox 现场的同时降低资源占用。按当前计费规则,它仅对 Pro 计划开放,且仍收取内存和磁盘费用。
深休眠用于在更低资源成本下保留 Sandbox 状态。它不收取 vCPU 和内存费用,但仍收取深休眠磁盘费用。
浅休眠和深休眠解决什么问题?
它们用于在保留 Sandbox 现场的同时减少重复初始化和空闲资源占用。
如果每次任务都重新创建 Sandbox,开发者需要反复等待环境准备、依赖加载、服务启动和上下文恢复。休眠/恢复让 Sandbox 可以在保留现场的基础上重新进入可用状态,减少重复初始化。
当前 E2B 兼容 SDK 对外提供的是 sandbox.pause():Sandbox 会进入 paused(深休眠)状态,之后可通过 Sandbox.connect(sandboxId) 恢复。SDK 文档未提供由应用选择浅休眠的接口;是否可使用浅休眠以当前计划和控制台开通能力为准。
恢复需要多长时间?
恢复耗时受 Sandbox 状态、资源规格、网络访问和平台调度影响。当前文档没有承诺固定恢复时延,业务链路应设置超时和有限重试,并在恢复后完成健康检查。
云沙箱休眠/恢复和 E2B pause/resume 有什么区别?
E2B 的 pause() 用于暂停一个 Sandbox,后续再连接同一个 Sandbox 继续使用。云沙箱兼容这一模式;当前 SDK 的 pause() 对应 paused(深休眠)状态。
浅休眠和深休眠的计费差异、计划限制参见按量付费。不要把 pause() 默认理解为浅休眠,也不要仅凭一次恢复成功就假设进程、端口或外部连接仍然可用。
开发者应该如何选择浅休眠和深休眠?
使用 E2B 兼容 SDK 时,需要保留现场的任务调用 pause(),之后通过 Sandbox.connect() 恢复。任务已经完成、不再需要恢复现场时,应终止 Sandbox,释放资源。
如需使用浅休眠,应先确认账号计划和控制台是否已提供对应入口,再根据实际恢复时延和成本测试决定。
使用休眠/恢复时需要记录什么?
至少记录 sandboxId、任务 ID、模板版本、当前阶段、关键文件路径、关键进程或端口信息。
恢复后建议做一次轻量健康检查,例如确认命令通道可用、关键文件存在、服务端口可访问。这样可以把休眠/恢复纳入稳定的业务状态机,而不是只依赖一次 SDK 调用结果。