Rails + Watir。硒 - 不能运行4个镀铬实例

时间:2014-08-13 13:46:15

标签: ruby-on-rails selenium watir selenium-chromedriver

我有一个基于Rails,Watir和chromedriver的解析器。

解析器每分钟运行一次新的chrome实例。每个实例都有不同的代理服务器完成1个解析任务需要5-6分钟。

因此,同时最多可以有6个chrome实例。问题是,chromedriver在尝试生成第5个实例后没有响应,它会杀死所有的chrome进程。

看起来像那样

13:00 - parse start - chromes=1
13:01 - parse start - chromes=2
13:02 - parse start - chromes=3
13:03 - parse start - chromes=4
13:04 - parse start - chrome crashes, all instances killed, chromes=0
13:05 - parse start - chromes=1

日志文件:

08/13 - 02:47 [1407890822] -- !! chrome not reachable
  (Session info: chrome=36.0.1985.143)
  (Driver info: chromedriver=2.10.267518,platform=Linux 3.13.0-30-generic x86_64)
08/13 - 02:47 [1407890762] -- !! chrome not reachable
  (Session info: chrome=36.0.1985.143)
  (Driver info: chromedriver=2.10.267518,platform=Linux 3.13.0-30-generic x86_64)
08/13 - 02:47 [1407890702] -- !! chrome not reachable
  (Session info: chrome=36.0.1985.143)
  (Driver info: chromedriver=2.10.267518,platform=Linux 3.13.0-30-generic x86_64)

尝试使用Firefox,但它有同样的问题,浏览器在产生过程#4后崩溃

代码,即产生浏览器

headless = Headless.new(display: 100, reuse: true, destroy_at_exit: false)
headless.start

proxy_serv = ProxyServer.order(last_use: :asc).first
proxy_address = "#{proxy_serv.ip}:#{proxy_serv.port}"

$browser = Watir::Browser.new :chrome, :switches => ["--proxy-server=#{proxy_address}"]
proxy_serv.update_attribute('last_use', DateTime.now)

OS: Ubuntu
RAM: 32GB
PROC: Intel® Core™ i7-4770 

解析运行期间的系统负载 - 2%

1 个答案:

答案 0 :(得分:-1)

我听说你是通过javascript触发弹出窗口,然后你可以使用windows方法访问额外的窗口,然后转到,等等。虽然有点草率