GCP Linux服务器运行Selenium脚本报错:Chrome无法访问及DevToolsActivePort缺失
Linux下Selenium Chrome驱动报错及系统卡顿问题解决
一、"chrome not reachable"和"DevToolsActivePort file doesn't exist"报错修复
以下是针对性的排查和修复步骤:
- 指定Chrome二进制文件路径:Linux环境中Chrome的安装路径和Windows不同,手动指定路径避免驱动找不到执行文件,示例代码:
co.binary_location = "/usr/bin/google-chrome" # 实际路径可通过`which google-chrome`命令查询 - 优化headless模式参数:在现有参数基础上添加
--remote-debugging-port=9222,同时移除driver.maximize_window()(headless模式下该操作无意义,反而可能引发异常) - 核对Chrome与chromedriver版本:两者版本必须完全匹配,执行以下命令确认版本:
版本不匹配时,直接下载对应版本的chromedriver替换现有文件。google-chrome --version chromedriver --version - 清理残留驱动进程:先手动杀掉所有Chrome相关进程,再重新运行脚本:
pkill -f chrome pkill -f chromedriver - 指定自定义临时目录:若系统默认临时目录权限不足,可指定Chrome使用的临时目录:
co.add_argument("--user-data-dir=/tmp/chrome_user_data") co.add_argument("--disk-cache-dir=/tmp/chrome_cache")
二、系统卡顿与后台进程的关系
- 没错,如果脚本报错且未执行
driver.quit(),chromedriver和Chrome进程会残留在后台,大量堆积后会占用大量CPU、内存资源,这就是你终端响应慢、系统卡顿的直接原因。 - 解决办法:
- 用
try/finally块保证驱动必被关闭,示例代码:global driver co = Options() # 你的参数配置... try: driver = webdriver.Chrome('chromedriver', options=co) driver.get('https://tradingview.com/') # 其他业务逻辑 finally: if 'driver' in locals(): driver.quit() - 脚本运行前先执行清理命令,避免残留进程堆积。
- 用
内容的提问来源于stack exchange,提问作者Marc Henry Saad
相关产品推荐
相关产品推荐

