使用Python Selenium时Chrome长时间运行后崩溃的问题排查
解决Python Selenium Chrome长时间运行后崩溃的问题
使用Python Selenium进行网页抓取时,初始运行正常,但持续5-6小时后Chrome会弹出“Google chrome has stopped working”的崩溃提示,当前使用的chrome_options配置如下:
chrome_options = Options() chrome_options.add_argument("enable-automation") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-extensions") chrome_options.add_argument("--dns-prefetch-disable") chrome_options.add_argument("--disable-gpu") #chrome_options.add_experimental_option("detach", True) #### NEW #chrome_options.add_argument(f'--proxy-server={None}') # INITIATE CHROME chrome_options.add_argument("--no-proxy-server") chrome_options.add_argument("--proxy-server='direct://'") chrome_options.add_argument("--proxy-bypass-list=*") chrome_options.add_experimental_option('extensionLoadTimeout', 60000) driver = webdriver.Chrome(executable_path='C:/Users/.wdm/drivers/chromedriver/win64/123.0.6312.122/chromedriver-win32/chromedriver.exe',options=chrome_options)
可以通过调整以下chrome_options参数来尝试解决崩溃问题:
- 添加
--disable-dev-shm-usage:解决共享内存空间不足的问题,减少长时间运行后的内存溢出风险,Windows和Linux环境均适用。 - 添加
--single-process:强制Chrome以单进程模式运行,避免多进程间的资源竞争,虽然可能降低部分稳定性,但能减少进程崩溃概率。 - 添加
--disable-features=VizDisplayCompositor:禁用可视化合成器,降低GPU相关资源消耗,避免GPU内存泄漏引发崩溃。 - 添加
--memory-pressure-off:关闭Chrome的内存压力管理机制,防止其因内存占用过高主动终止进程,适合长时间运行的爬虫场景。 - 添加
--disable-background-timer-throttling:禁用后台定时器节流,避免Chrome在长时间运行时因后台任务限制出现异常。 - 添加实验性选项调整页面加载策略:将
pageLoadStrategy设为eager,等待DOM加载完成即可继续执行,无需等待所有资源加载完成,减少资源消耗:chrome_options.add_experimental_option('pageLoadStrategy', 'eager') - 启用无头模式(无需可视化界面时):添加
--headless=new,彻底关闭UI渲染,大幅降低资源占用,这是优化长时间运行稳定性最有效的手段之一。
除了参数调整,还可以配合以下操作进一步优化:
- 定期重启Driver:每爬取一定数量的页面后,关闭当前Driver并重新初始化,及时释放占用的内存和资源。
- 确认版本匹配:确保Chrome浏览器和chromedriver的版本完全一致,避免版本不兼容导致的隐性崩溃。
- 检查爬虫逻辑:排查代码中是否存在内存泄漏,比如未及时关闭页面、未释放变量等问题。
内容的提问来源于stack exchange,提问作者san1
相关产品推荐
相关产品推荐

