【问题标题】:Chrome browser crashed on running multiple chrome browsers in a chrome node Docker containerChrome 浏览器在 chrome 节点 Docker 容器中运行多个 chrome 浏览器时崩溃
【发布时间】:2018-08-20 04:28:05
【问题描述】:

主要目的是在单个容器中运行多个 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 个浏览器)在单个容器中运行我的测试用例时,测试用例会执行一段时间,然后浏览器开始一个接一个地崩溃。

我已经尝试过容器的 docker logs,但无法找到问题的实际原因。

有人可以指导我吗?如何调试这种情况?有没有人遇到过类似的问题并解决了?

【问题讨论】:

  • 可以添加一些日志输出吗?有没有可能你的内存用完了?

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


【解决方案1】:

Chrome浏览器一一崩溃的主要原因是Hypertext Transfer Protocol -- HTTP/1.1

RFC2616Section 8.1.4 - Connections 中提到单用户客户端最多可以与任何服务器或代理保持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

修改 hosts 文件找到另一种方法来增加持久连接的数量

【讨论】:

    猜你喜欢
    • 2017-05-07
    • 2017-03-15
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多