在一台 3G 内存的云电脑上跑浏览器自动化,我删掉了一半代码

举报
yd_224817468 发表于 2026/11/12 16:07:25 2026/11/12
【摘要】 内存不够的时候,优化思路不是让代码更快,而是让它更少。

这台云电脑是 2 核 3G,装完系统还剩两G多。我一开始想得很美:Playwright 起一个 Chromium,定时跑几个任务,完事。

结果第一次跑就卡死。free -m 一看,Chrome 起来就吃掉一个多G,加上 Node 那边的工作台本身,系统开始频繁回收内存,页面渲染到一半就白屏。截图全是灰的,我还以为是网络问题,反复重试了半小时。

后来才想明白,无头浏览器在这种小机器上根本不是「轻量」。我的做法是干脆不用无头模式自带的独立实例,改成复用一个常驻的可视 Chrome,用 --remote-debugging-port 挂上去,Playwright 只做 connect_over_cdp。这样浏览器只启动一次,每次任务相当于开个新标签页,内存曲线平了很多。

启动参数也调了:--disable-dev-shm-usage 是必须的,容器里 /dev/shm 默认只有 64M,不改的话渲染大页面必崩;--disable-gpu 对这种机器毫无损失;再加上 --no-first-run --no-default-browser-check,省掉首次启动那堆弹窗。

还有一个坑是 cookie。用 Playwright 自己管 profile 的话,每次启动都是新的上下文,登录态全丢。我改成固定 --user-data-dir,把登录态留在磁盘上,脚本只负责读 cookie 判断有没有登录,不再反复登录。

改动之后,同样的任务从「跑十分钟崩一次」变成能连续跑一天。代码反而少了两百多行,因为不需要处理各种启动失败的兜底了。

所以内存紧张的时候,先想的应该是「能不能不启动」,而不是「怎么启动得更快」。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。