Docker容器中Puppeteer随机启动失败问题求助
Docker容器内Puppeteer随机启动失败问题
我有一个部署在VPS上的Node项目,运行在Docker容器中,项目会启动多个Puppeteer浏览器,但存在随机启动失败的问题。一旦出现故障,后续可能长时间无法恢复正常;全新OS镜像上几乎总能成功启动,但后续会出现问题,且该问题仅在部分VPS上出现。
Puppeteer启动代码
const browser = await puppeteer.launch({ headless: false, executablePath: '/usr/bin/google-chrome-stable', userDataDir, args: [ `--disable-extensions-except=${path.join( extensionDir, 'extension' )}`, `--load-extension=${path.join(extensionDir, 'extension')}`, '--no-sandbox', '--disable-setuid-sandbox', `--proxy-server=${ip}:${port}`, ], });
我使用xvfb以headful模式(headless: false)启动Chrome。
遇到的错误
错误1
发生错误: Error: 无法启动浏览器进程! [0117/175710.345450:ERROR:nacl_helper_linux.cc(354)] NaCl辅助进程在无沙箱环境下运行! 很可能你需要正确配置SUID沙箱 故障排查: https://pptr.dev/troubleshooting
错误2
ProtocolError: 协议错误(Target.createTarget): 无法打开新标签页 在 <instance_members_initializer> (/app/src/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:86:14) 在 new Callback (/app/src/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:90:16) 在 CallbackRegistry.create (/app/src/node_modules/puppeteer-core/lib/cjs/puppeteer/common/CallbackRegistry.js:22:26) 在 Connection._rawSend (/app/src/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:80:26) 在 Connection.send (/app/src/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:74:21) 在 CdpBrowser._createPageInContext (/app/src/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Browser.js:178:53) 在 CdpBrowserContext.newPage (/app/src/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Browser.js:303:30) 在 CdpBrowser.newPage (/app/src/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Browser.js:175:43) 在 ensureLoggedIn (/app/src/index.js:158:32) 在 process.processTicksAndRejections (node:internal/process/task_queues:95:5)
已尝试的无效/部分有效方法
- 清理
userDataDir:偶尔有效,但成功率不高 - 执行
sudo reboot now、docker stop <name> && docker start <name>:并非总能解决问题 - 删除并重建Docker容器/镜像:同样无法保证每次有效
Docker容器配置了--restart=always,但有时无法自动重启,不确定是浏览器重启过快还是其他原因导致。
内容的提问来源于stack exchange,提问作者refresh
相关产品推荐
相关产品推荐

