BrowserContext 内存与长期会话容量规划
用实测内存、准入控制、清理和回滚为长期浏览器会话规划 BrowserContext 容量。
BrowserContext 可以在共享浏览器启动成本的同时隔离存储和会话状态,但每个活动 context 都会消耗资源。浏览器版本、宿主镜像、页面类型和 profile 策略变化后,内存斜率也可能变化。容量规划应测量完整浏览器组,而不是沿用旧的 context 上限。
BrowserContext 只是在共享浏览器基础设施中隔离存储和会话状态,不是操作系统、进程或安全边界。如果需要这些边界,应使用独立浏览器或独立宿主。
测量完整浏览器组
记录浏览器版本、profile family、宿主类型、容器限制、路由、存储策略和代表性工作流。先测没有 context 时的基线,再在多个活动数量下记录创建、稳定运行、空闲和关闭结果。
重点不是一个通用数字,而是当前版本和工作流的容量曲线:基线内存、每个 context 的增量、并发创建延迟、关闭后的恢复,以及宿主剩余空间。页面、媒体、Worker、扩展、图形和网络都会改变曲线。
建立可重复工作负载
为文档、表单、图形页面和后台任务分别命名并记录 revision。每个流程都要说明如何开始、如何完成以及何时关闭 context。baseline 和 candidate 必须运行同一 revision。应用变化后先更新流程记录。
读取生命周期
创建、稳定运行、空闲和关闭具有不同资源形态。快速创建大量 context 可能需要创建限制,长期会话则需要数小时级恢复观察。关闭后检查资源是否回到预期范围,不要只统计成功启动数量。
管理准入和回滚
准入上限应包含暂停点、恢复点和负责人。内存压力出现时先暂停新任务,让现有任务完成并释放资源。保留上一组浏览器和 profile,必要时按 browser group 回滚。
区分工作负载
只有当测量结果显示边界明显不同,才拆分媒体、图形或移动工作负载。每个 group 需要名称、浏览器和 profile、宿主类型、路由与存储策略、上限、恢复规则和负责人。
容量规划链接
Scaling BrowserContexts 讨论隔离和资源取舍。Chromium 151 BrowserContext Memory Planning 介绍版本相关的内存测量。Browser Release Validation 介绍候选版本推广流程。
设置准入边界
容量上限必须留下恢复空间。宿主接近系统限制后才暂停,通常已经没有足够空间完成现有任务。记录谁能暂停新任务、队列如何处理、何时恢复接入。隐藏重试循环会在压力下继续创建 context,应避免这种做法。
浏览器版本、profile 和 context 策略应作为一个发布单元。一次实验只改变一个输入,并保留已接受的版本用于回滚。
把清理纳入容量
创建只是生命周期的一半。关闭 context 后,资源应按发布记录预期释放,浏览器组应回到恢复范围。检查关闭延迟和关闭后的内存,不只检查启动是否成功。
如果清理跟不上,先暂停准入,再检查队列、页面工作负载、下载、媒体、Worker 和扩展。不要用提高宿主限制掩盖生命周期问题。长期会话还需要数小时级观察窗口,因为短测试可能看不到缓慢累积。
相关内容
Scaling BrowserContexts 讨论隔离和资源取舍。Chromium 151 BrowserContext Memory Planning 介绍版本相关的内存测量。Browser Release Validation 介绍候选版本推广流程。
验收清单
- 在多个活动数量下测量完整浏览器组。
- 记录创建、稳定、空闲、关闭和恢复。
- 设置带有明确余量和负责人的准入上限。
- 只有测量结果支持时才拆分工作负载组。
- 浏览器、profile、宿主或图形变化后重新验证。
- 保留上一组浏览器和 profile 以便回滚。