如何通过启动参数优化无头模式Chromium下Puppeteer的运行性能
Puppeteer 爬取配置相关解答
1. Puppeteer 启动 Chromium 时默认启用的标志
Puppeteer 为适配自动化场景,默认会启用以下核心启动标志:
--allow-pre-commit-input--disable-background-networking--disable-background-timer-throttling--disable-backgrounding-occluded-windows--disable-breakpad--disable-client-side-phishing-detection--disable-component-extensions-with-background-pages--disable-default-apps--disable-dev-shm-usage--disable-extensions--disable-features=Translate,BackForwardCache,AcceptCHFrame,MediaRouter,DialMediaRouteProvider,OptimizationHints--disable-hang-monitor--disable-ipc-flooding-protection--disable-popup-blocking--disable-prompt-on-repost--disable-renderer-backgrounding--disable-sync--enable-automation--enable-blink-features=IdleDetection--force-color-profile=srgb--metrics-recording-only--no-first-run--password-store=basic--use-mock-keychain
如果启用无头模式,还会额外添加--headless=new(新版无头模式)、--hide-scrollbars、--mute-audio等标志。你当前配置里的--disable-dev-shm-usage、--no-first-run都属于默认启用的参数,重复添加不会产生影响。
2. 可提升Puppeteer运行性能的启动参数
针对百万级规模的长时爬取场景,除了你已经在用的参数外,还可以按需添加以下参数提升性能:
--no-sandbox:配合你已配置的--disable-setuid-sandbox使用,可规避Linux无桌面环境下的沙箱权限报错,减少多余的权限校验开销,仅在爬取可信站点时使用--disable-images:完全禁用图片加载,可减少30%~70%的带宽占用和页面渲染耗时,不需要提取图片内容的场景优先添加--blink-settings=imagesEnabled=false:禁用图片加载的另一种实现,部分特殊站点下兼容性优于上一个参数--disable-javascript:如果待爬页面为服务端渲染,不需要执行JS即可获取完整内容,添加该参数可获得翻倍的性能提升,使用前需确认页面内容加载逻辑--disable-plugins:禁用所有浏览器插件,减少多余进程启动开销--disable-notifications:禁用系统通知弹窗,避免弹窗阻塞页面执行逻辑--memory-pressure-off:关闭Chromium的内存压力检测机制,避免长时爬取内存占用升高时,浏览器主动回收进程导致任务中断--disk-cache-size=1073741824:设置磁盘缓存大小为1GB,重复访问同站点静态资源时无需重复下载,大幅提升二次访问速度--disable-translate:禁用谷歌翻译弹窗,避免无关交互阻塞爬取流程
如果你的爬取并发不高,还可以添加--single-process参数让Chromium以单进程模式运行,减少多进程调度开销,高并发场景下不建议使用,会降低稳定性。
调整后参考配置示例:
args: [ '--disable-setuid-sandbox', '--no-sandbox', '--disable-accelerated-2d-canvas', '--disable-gpu', '--disable-images', '--disable-plugins', '--disable-notifications', '--memory-pressure-off', '--disk-cache-size=1073741824' ]
内容的提问来源于stack exchange,提问作者Rajat
相关产品推荐
相关产品推荐

