What is a Jenkins Executor and how can I best utilize my executors

Issue

I’d like to understand what is a Jenkins executor, and how to best manage executors?
How many executors should I allocate to a build agent?

Environment

Resolution

A Jenkins executor is one of the basic building blocks which allow a build to run on a node/agent (e.g. build server). Think of an executor as a single “process ID”, or as the basic unit of resource that Jenkins executes on your machine to run a build. Please see Jenkins Terminology for more details regarding executors, nodes/agents, as well as other foundational pieces of Jenkins.

You can find information on how to set the number of Jenkins executors for a given agent on the Remoting Best Practices page, section Number of executors.

CloudBees Jenkins Operations Center (CJOC) has some licensing options. In most cases, the “License (no dedicated executors)” option is recommended, as this allows CJOC to manage the total pool of executors, allocating to each of the CloudBees Jenkins Enterprise (CJE) instances as needed.

Using CJOC is the most efficient approach to making the most use of your available executors (and node/agent resources as well). If Shared Agents or Shared Cloud resources are defined at the parent CJOC level, the children CJE instances can scale up/down as needed to make the best use of the total resources. It is a more efficient approach to define Shared agent resources using a total allocation of 40 executors at the CJOC level, than it is to define local agents attached to 4 JE instances with each consuming 10 executors - a scenario that is much more likely to result in queued builds due to Executor Starvation.

Default Jenkins Behavior explains how executors function on available nodes. CloudBees Jenkins Enterprise includes some features to help manage and make the best use of your executors, to prevent the common issue of Executor Starvation. Please see the Even Loading Strategy and Even Scheduler Plugin for more details.

Have more questions? Submit a request

2 Comments

  • 0
    Avatar
    Dominik Panas

    What about parallel steps? For example i have job stage1-stage2a-stage2b-stage3 where stages 2 are parallel. Do i have to make some additional executors to effectively run those prallel stages? And if so, then if i have 2 machines and each has 2 executors, how to prevent running 2 jobs on the same machine (on step1)? 

  • 0
    Avatar
    Denys Digtiar

    The new executor is used whenever you use the `node` step. If parallel branches do not request their own nodes they should be running by the same executor.

Please sign in to leave a comment.