【问题标题】:Jenkins: two slaves vs. one slave two executors詹金斯:两个奴隶对一个奴隶两个执行者
【发布时间】:2018-12-08 15:40:29
【问题描述】:

我在同一个 Windows 服务器上创建两个从站或一个从站和两个执行器之间有什么区别吗?

【问题讨论】:

    标签: jenkins jenkins-slave


    【解决方案1】:

    是的,有区别:它与内存消耗和维护/管理工作量有关。

    • 在系统上启动从属程序会启动一个(主)进程。此进程会消耗(私有)主内存来运行并连接到主内存。
    • 每个执行者都是主进程的子进程。

    因此很明显,与运行两个从属服务器(每个执行程序一个执行程序)相比,在一个从属服务器上运行两个执行程序的总内存消耗更少,因为主进程的内存消耗会是两倍:

    2 * Main Processes + 2 * Executors > 1 * Main Process + 2 * Executors
    

    此外,管理从属服务器比仅执行一个执行程序需要更多的工作:虽然执行程序几乎没有什么可担心的,但有许多事情需要为从属配置。此外,两个从站的功能无论如何都是相同的(它们运行在同一个操作系统上,如您所说),因此为其分配不同的标签几乎没有任何附加值。

    简而言之,如果没有其他边界条件让我做不同的事情,我总是更喜欢在一个奴隶上运行两个执行器,因为这样更容易管理并且节省了一些内存。

    【讨论】:

    • 虽然总的来说我同意你的回答 (+1) - 每个场景都应该区别对待。使用 docker slaves 毫不费力,几乎不需要管理。与多个从机一起工作可能会更好地运行不能在同一台机器上并行运行的 UI 测试。在许多情况下,拥有 2 个从站比拥有一个从站更有意义,重要的是要记住,没有针对它的全局最佳实践,而是取决于实际在该预期环境上运行的流。
    • 这就是为什么我说“如果没有其他边界条件”:-) 而且,不管你信不信,我有“UI 测试,它不能在同一台机器上并行运行” " 在我写的时候想到的场景(我这里正好有这个问题,这让我抓狂,至于每个执行者,我需要一个自己的 vserver slave,因为我无法将此事 dockerize)
    • 请记住,您不一定需要使用执行程序计数来控制每个节点的并发性。此外,存在需要多个执行者的作业布局。
    • 在我们的例子中,它在同一个从服务器上没有区别,所以我认为使用两个执行器比使用两个从服务器更好。至少可以为工作空间节省磁盘空间。
    【解决方案2】:

    奴隶是一台“机器”。 executor是slave中的一个“OS进程”。

    因此,理想情况下,我们总是添加执行器 - 他们完成工作并且可以并行运行,您的问题的简单理论答案是“一个奴隶上的 2 个执行器”

    在实践中,我们需要在几个用例中添加从站:

    1. 我们需要更多资源(更多 CPU、更多内存、更多“机器”)
    2. 我们需要不同的设置(不同的操作系统,不同的硬件)
    3. 我们拥有全球资源,这会导致同一台机器上的执行程序发生冲突(用于 UI 测试过程的共享浏览器)

    根据您的用例做出决定。

    【讨论】:

      【解决方案3】:

      我立即想到在给定节点上运行 1 个执行程序的一个好处是防止同时运行的进程之间发生冲突。

      另一方面,您可以使用现有的 Jenkins 插件来防止工作冲突,即。繁重的工作,构建拦截器。

      【讨论】:

        猜你喜欢
        • 2014-02-20
        • 1970-01-01
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 2015-07-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多