gpt4 book ai didi

docker - 如何在使用 docker-compose 并行运行 docker 容器时限制 cpu 使用率

转载 作者:行者123 更新时间:2023-12-02 18:38:54 25 4
gpt4 key购买 nike

在 docker 容器中执行自动化 ui 测试用例。
使用 docker-compose 来做同样的事情。
我们将测试用例分为多个模块,每个模块代表 docker-compose 文件中的一个服务。有40个服务。

这是 docker-compose 文件(显示 2 个服务):

version: "2.2"
services:
Module1:
image: ${Image_Name}
command: powershell "cd C:\tools;&'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\MSTest.exe' /testcontainer:C:\tools\SpecFlowProject.dll /category:Module1 /resultsfile:C:\tools\Module1.trx /testsettings:C:\tools\TestSettings.testsettings"
volumes:
- ${Source_Path}:${Dest_Path}
Module2:
image: ${Image_Name}
command: powershell "cd C:\tools;&'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\MSTest.exe' /testcontainer:C:\tools\SpecFlowProject.dll /category:Module2 /resultsfile:C:\tools\Module2.trx /testsettings:C:\tools\TestSettings.testsettings"
volumes:
- ${Source_Path}:${Dest_Path}
networks:
default:
external:
name: nat

.env 文件如下所述:
Source_Path=C:\Automation
Dest_Path=C:\tools
Image_Name=automation/testagent:v63
Tagname=latest

主机的硬件配置是 12 GB RAM 和 12 个 CPU。
当我们执行 docker-compose 时,cpu 连续 100% 运行,并且在执行测试用例时出现超时错误以及无法连接到远程服务器错误。
如果我们一次执行 2 个服务的 docker-compose,那么 cpu 利用率没有负担,所有测试用例都通过了。
整个 40 类的测试套件在没有 docker 的情况下执行需要 9 个小时,为了加快执行并并行运行,我们选择了 docker,但是高 cpu 利用率对我们来说是一个挑战。如何在 docker-compose 模式下限制容器以限制 cpu 利用率?

最佳答案

问题不在于您为每个容器分配的 docker 或 cgroup 命名空间或 qouta,问题在于位于容器内的底层 jvm
这是因为 Java 没有识别出它是在容器中运行的。
尝试使用 jvm 内存限制参数,即 JAVA_OPTS 和 Xms XMx 选项,您可以在 Selenium (测试服务容器)的 CMD 或 ENTRYPOINTS 中指定它们。

也请引用 https://blog.docker.com/2018/04/improved-docker-container-integration-with-java-10/
尝试升级相应服务的 java 版本。这可能会解决您的问题。

关于docker - 如何在使用 docker-compose 并行运行 docker 容器时限制 cpu 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49477397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com