【问题标题】:Is dockerized Selenium in Python a resource hungry process?Python中的dockerized Selenium是一个资源匮乏的过程吗?
【发布时间】:2021-02-04 17:11:22
【问题描述】:

我在一个旧线程中读到 dockerized selenium grid 是一个资源饥渴进程。

我正在尝试并行运行 250 到 300 个硒测试, 经过一些研究后我发现我有 3 个选项:

1:多线程 2:多处理 3:在docker容器中运行selenium脚本

但后来我读到多线程并没有真正在并行中进行 i/o?

所以我将注意力转移到 dockerized selenium 脚本上。

那么一个简单的 dockerized selenium 脚本会消耗多少资源呢? 脚本的 selenium 部分非常简单,它接收 3 到 5 个值,然后在网页上输入这些值,然后单击按钮。

24 gb ram4 个 cpu 核心 是否足以满足上述过程?

【问题讨论】:

    标签: selenium selenium-grid selenium-docker python-docker docker-selenium


    【解决方案1】:

    如果您要在一台主机上运行所有内容,您将不会从 dockerizing 中获得任何收益。

    这里最消耗的部分是网络浏览器。尝试同时运行250-300个浏览器实例,你会得到答案。

    基本上 docker 不解决并行化问题。它解决了隔离问题并简化了分发和部署。您列表中最节省资源的方法是多线程,但这需要保持您的测试代码线程安全。

    我建议你做一个测试。你的浏览器需要多少取决于你的 UI 有多重。如果它加载大量数据,它将占用更多 RAM,如果它运行大量 javascript,它将占用更多 CPU。因此,从 20 个并行会话开始并注意您的资源。如果一切正常,则增加。

    【讨论】:

    • 所以 dockerized selenium 在这种情况下对我没有好处,我有点希望,不过我对多线程有点困惑,我一直像僵尸一样上网,我只阅读混合的答案,一些消息来源说多线程可以并行工作,而其他消息来源说它不会......
    • docker 中的进程最终将共享相同的硬件,就像它们在没有 docker 的情况下共享一样。因此,如果您有许多计算机,您可以在它们上部署集群(使用 swarm 或 kubernetes)并从中受益。
    • 我在没有多线程或其他任何负责启动浏览器的情况下运行 selenium 部分,然后将数据输入到所需字段并单击等......我运行了 10 个实例,所有 10 个仅消耗532 mb 的内存,而我所有 10 个的 cpu 使用率都低于 17% ...这是我非常喜欢的东西,因为它资源友好,但主要问题是如果 200 个 selenium 脚本需要在网页上输入数据将多线程帮助 selenium 同时在所有 200 个浏览器实例上执行任务?还是会先完成一项任务,然后再进行另一项任务?
    • 多台电脑对我来说不是解决方案很遗憾
    • 拥有网格的想法是您在一侧有参数化测试,并且可以在其中实际执行测试的多个“节点”。所以你并行运行测试 1、测试 2 和测试 3。所有三个测试都创建到RemoteWebDriver 的 3 个并行连接。因此,每个都使用自己的 WebDriver 实例进行操作。通过RemoteWebDriver,您可以连接到网格集线器,该集线器可以将命令发送到适当的节点。在每个测试的节点上,专用浏览器都会启动。因此,拥有 300 个并行测试将需要 300 个并行 Web 浏览器,每个浏览器都加载自己的上下文资源 ==>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2021-05-09
    • 2017-11-19
    • 2019-06-22
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多