Chrome浏览器在Chrome节点Docker容器中运行多个Chrome浏览器时崩溃了

时间:2018-03-12 07:50:17

标签: google-chrome docker selenium-webdriver selenium-grid docker-machine

主要目的是在一个容器中运行多个chrome浏览器(9个浏览器)。

我有一个枢纽&具有多个浏览器的容器的节点设置,以在单个chrome节点容器中运行。我使用以下docker命令创建了两个容器:

要创建集线器容器: docker run -d -p 4445:4444 --name selenium_hub selenium / hub

创建节点容器并将其链接到集线器: docker run -v / dev / shm:/ dev / shm -d -p 6001:5900 -p 7001:5555 -e NODE_MAX_INSTANCES = 7 --name chrome_6 --link selenium_hub:hub selenium / node-chrome-debug

问题是当我通过同时启动多个Chrome浏览器(9个浏览器)在单个容器中运行我的测试用例时,测试用例会执行一段时间然后浏览器逐个崩溃。

我已尝试过容器的泊坞日志,但无法找到问题的实际原因。

有人可以指导我吗?如何调试这种情况?是否有人面临类似的问题并修复它?

1 个答案:

答案 0 :(得分:0)

Chrome浏览器逐个崩溃的主要原因与Hypertext Transfer Protocol -- HTTP/1.1

有关

Section 8.1.4 - Connections RFC2616中,提到单用户客户端可以与任何服务器或代理保持最多2个连接。代理可以使用最多 2 * N 连接到另一个服务器或代理,其中N是同时活动用户的数量。这些指南旨在改善HTTP响应时间并避免拥塞。

话虽如此,值得一提的是,现代浏览器的限制性要小于此,允许更多的连接 RFC2616 未指定如何防止超出限制。可以阻止任何连接打开,也可以关闭现有连接。

来自this site的示例说明了以下限制:

  • Internet Explorer 7.0 2
  • Internet Explorer 8.0 and 9.0 6
  • Internet Explorer 10.0 8
  • Internet Explorer 11.0 13
  • Firefox 6
  • Chrome 6
  • Safari 6
  • Opera 6
  • iOS 6
  • Android 6

解决方案

可行的解决方案似乎将并发持久连接的数量限制为 6

根据讨论Selenium grid sessions not applied 子域修改主机文件来找到另一种增加持久连接数的方法>