Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Capacity planning

For public-sector IT teams sizing servers for an Exponential site. The figures the repository actually states (memory limits, Velocity workers, OPcache, disk thresholds, measured cache throughput), what drives load, how…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/government/operations/availability/capacity-planning.md

On this page

Capacity planning

This page is for IT teams and project managers in public bodies who must specify servers for an Exponential site, often for a procurement or a budget request. It answers which figures the repository actually gives, what drives memory, CPU and disk use, and how to measure your own site so the specification rests on evidence. It gives no figures of its own; the installation book says the same: "The documentation gives few hard numbers, and this book does not invent others" (Sizing memory, CPU and disk).

Contents

  1. The figures the repository gives
  2. What drives load
  3. Measure your own site
  4. Planning for peaks
  5. Writing a server specification
  6. Checklist

The figures the repository gives

ItemValueSource
PHP memory_limit, installer floor64Msettings/setup.ini
PHP memory_limit, health checkbelow 128M a failure, below 256M a warningSystem information
One Velocity workerabout 10 MB of private memory (measured)settings/velocity.ini
Velocity poolWorkers=4 shippedsettings/velocity.ini
OPcachememory_consumption=256, max_accelerated_files=20000velocity.ini [PHPSettings]
Free disk, health checkunder 1 GB or 5 % a failure; under 5 GB or 10 % a warningSystem information
SQLite VACUUMabout twice the database's size in free disk9.2
Cached pages under Velocityabout 0.3 ms of CPU each; about 3,500 a second on a 12-core machine (measured)settings/velocity.ini

All from Sizing memory, CPU and disk, which also lists the MongoDB figures and the log rotation limits. Measured figures are from the project's own machines; yours will differ.

What drives load

  • Cached pages cost little. Anonymous visitors are answered by the response cache or the HTTP cache without PHP (Velocity response cache and HTTP cache).
  • Rendered pages (first views after a clear, signed-in editors, searches, forms) are where CPU goes.
  • PHP processes use up to their memory_limit at peak; imports, package installs and image work need the most.
  • Disk grows with uploads in var/storage, which is usually the main factor; caches and logs are bounded by rotation and can be cleared.
  • Cron and image variations add bursts.

Measure your own site

php bin/php/console exp:benchmark --save=var/benchmark/base.json --allow-root-user
php bin/php/console exp:system:info --json --allow-root-user
du -sh var/storage var/cache var/log

exp:benchmark requests the front page, menu pages, the search page and the admin login page and prints median, p90 and p99; it is polite by default (Benchmarking). Measure the same request before and after a change; "a single page load proves nothing" (Deploying). Run it against a test copy with production content, not against the live site at a busy time.

Planning for peaks

Public-sector sites have predictable peaks (deadlines, election results, school enrollment) and unpredictable ones (storms, emergencies). For both:

  • make sure the pages that will be visited are cached and warm (Cache warming after changes);
  • avoid full cache clears and deploys right before a known peak;
  • know how to raise Velocity's Workers and restart, and measure again after each change;
  • consider a lightweight, mostly static information page for emergencies (Static cache).

Writing a server specification

For a procurement or budget request, write the specification from measurements, and label the rest:

ItemHow to state it
CPU cores and memorymeasured on a test copy, plus headroom you choose; mark headroom as "example assumption" until measured
Disk for var/storagetoday's size (du -sh) and expected growth from your content plans
Database sizefrom Setup > System information, Database card
PHP workersVelocity's Workers or the PHP-FPM pool size you tested
Backupsroom off the machine for the generations you decided

Checklist

  • To do: Production pools have memory_limit 256M or more.
  • To do: Velocity's Workers is set explicitly and tested.
  • To do: Disk monitoring uses the System information thresholds.
  • To do: A benchmark of a test copy is saved as the reference.
  • To do: The server specification separates measured figures from assumptions.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x