Jenkins CI/CD Server Requirements: Sizing the Controller and Build Agents

Keep the Jenkins controller small and put builds on agents. How to size both.

Keep the Jenkins controller small and stable, and run every build on separate agents, sized from the StreamData KVM VPS plans. The controller schedules jobs, stores configuration and serves the UI. Agents do the compiling and testing. Jenkins' own documentation recommends against running builds on the controller, both for performance and for security.

What drives Jenkins load

  • On the controller: number of jobs, build history kept, plugins, and concurrent users of the UI.
  • On agents: the builds themselves: compilers, test suites, container image builds and dependency downloads.
  • On disk: workspaces, build artefacts and caches.

Controller sizing

Team sizeController starting pointStreamData plan
Small team, tens of jobs2 cores, 4 GBSD-2Core-4GB (₹596)
Growing team, hundreds of jobs4 cores, 8 GBSD-4Core-8GB (₹1,438)
Large installation6 cores, 16 GBSD-6Core-16GB (₹2,399)

Give the Jenkins JVM a fixed heap well below total memory, for example -Xms2g -Xmx2g on a 4 GB server, and grow it only when garbage collection logs show pressure. Jenkins' hardware recommendations page discusses memory and disk for the controller in more detail.

Agent sizing

Size agents from the build, not from Jenkins:

  1. Time your slowest build on a developer machine and note CPU and memory use.
  2. Decide how many builds must run at once at peak.
  3. Give each concurrent build its own CPU and memory budget.
  4. Add disk for workspaces and caches, and clean them up after builds.

Compilers, TypeScript builds and many test runners are sensitive to single-core speed. Agents on the 9950X range often shorten builds noticeably, but measure your own build before and after:

9950X planvCPUDDR5NVMeMonthly
9950X VPS 16416 GB64 GB₹2,399
9950X VPS 32632 GB128 GB₹4,799
9950X VPS 48848 GB192 GB₹7,199
9950X VPS 641064 GB256 GB₹9,599

The AMD Ryzen 9 9950X is a 16-core, 32-thread Zen 5 processor rated for boost clocks up to 5.7 GHz. A 9950X VPS receives a virtual allocation on that host, not exclusive use of all sixteen cores. See the 9950X VPS plans page.

Static or ephemeral agents

Static agents keep caches warm, which helps large builds with heavy dependencies. Ephemeral agents started per build in containers give a clean environment every time. Many teams use both: ephemeral containers for most jobs and one or two static agents for heavy builds.

Security basics

  • Set the controller's executor count to zero so no build runs there.
  • Connect agents over SSH or inbound agents with authentication, never an open port.
  • Do not mount the Docker socket into build containers unless you accept that builds can control the host.
  • Put the controller behind a reverse proxy with TLS and single sign-on.

Disk and backups

Use the Workspace Cleanup plugin and a build discarder policy so workspaces and history do not fill the disk. Back up JENKINS_HOME off the server. StreamData's backup policy leaves backups to the customer unless a written order includes them.

A worked example

A team of twenty developers with about sixty pipelines, peaking at six concurrent builds of a Java service and a TypeScript front end:

  • Controller: SD-4Core-8GB with a 3 GB heap and zero executors.
  • Agents: two 9950X VPS 32 agents, each running three builds at a time, with dependency caches on local NVMe.
  • Artefacts: pushed to a repository manager, not kept in Jenkins build history.

Measure queue time and build duration for a month. If builds queue, add an agent. If builds are slow but not queued, look at the build itself before adding hardware.

Plugins

Every plugin runs inside the controller's JVM. Install only what you use, keep plugins updated, and remove abandoned ones. Many controller performance and security problems trace back to plugin sprawl rather than hardware.

Monitoring the build system

Track three numbers: time jobs spend in the queue, build duration, and controller heap usage after garbage collection. Queue time tells you whether you need more agents, duration tells you whether agents are fast enough, and heap tells you whether the controller itself is under strain.

Frequently asked questions

Can the controller and one agent share a VPS?

For a very small team, yes, but separate them as soon as builds affect UI responsiveness.

Does Jenkins need a dedicated server?

Rarely for the controller. Build farms with sustained heavy compilation can justify dedicated hardware, such as the 9950X bare-metal servers in StreamData's dedicated inventory.

How much disk do agents need?

Enough for the largest workspace, dependency caches and container images at peak concurrency, plus headroom.


Sources