【发布时间】:2019-10-01 22:50:57
【问题描述】:
我有一个使用 Docker 容器作为构建从属的 Jenkins 设置。
容器通过 Docker 插件作为代理进行配置 - 而不是实例化容器的 Jenkinsfiles。
机器是 8 线程 i7,具有 16GB 内存和 16GB 交换文件。目前我只运行一个容器。
如果容器中的构建使用全部 8 个线程,它似乎会在构建时导致 OS OOM 杀死一些 GCC 进程。构建任务混合在一起,有些我可以显式控制 make 线程的数量,其他的它将查询系统的核心数量并扩大范围。当有最大数量的活动线程时,它似乎会耗尽 RAM 而不会限制或停止工作 - 它似乎也没有充分利用交换。
我想限制 Docker 从站允许使用的 CPU 内核数量,但我找不到将 --cpus=2 参数传递给 Docker 运行命令的方法。 share 参数似乎没有我想要的效果。
我很乐意从容器配置中明确分配资源以使服务器更可靠,但我不希望它遇到硬限制并导致 OOM 被杀死。
【问题讨论】: