Configuration

Everything lives on Heat → Settings, and nothing is required — a required plugin setting breaks fresh installs outright, so Heat validates for correctness when a value is present instead.

Projection

SettingDefaultDoes
Default traffic mixbrowsingWhich mix the overview opens on
Think time0Seconds a visitor pauses between pages. Zero uses each mix’s own figure — 10s for visitors, 4s for the editorial mix.

The machine to model

Zero means “probe for it”. Anything else wins, and is recorded as a stated fact rather than an inference.

SettingDoes
PHP workerspm.max_children, or Apache’s MaxRequestWorkers
CPU coresCores available to the web tier
Memory available to the worker poolWhat is left after the OS, the database and everything else on the box
Database connection limitmax_connections
Query parallelismHow many queries the database can genuinely run at once — its core count, not its connection limit
Request timeoutWhen the web server gives up and returns a 504

Measurement

SettingDefaultDoes
Allow runs on production Off A pass sends a few dozen sequential requests and creates and deletes a throwaway account. Gentle — but not something to start without meaning to.
Samples per scenario 12 More samples narrow the answer and lengthen the pass. A dozen is enough for the trimmed mean to stop moving on a quiet machine; on a laptop with a browser open, more is worth having.
Warm-up requests 3 Made and thrown away first. The first request to any page pays for OPcache compiling the templates and the database filling its buffer pool — measuring that would describe a state the site is only in for one visitor.
Maximum requests per run 400 A hard cap, whatever else the pass is told.
Time budget per run 120s Wall-clock ceiling for a whole pass.
Abort at this error rate 0.25 A pass that keeps going once the site starts erroring is no longer measuring the site, it is measuring the error page — and doing so while whatever is wrong gets no quieter.
Verify TLS certificates On Leave it on. Local development with a self-signed certificate is the only good reason to turn it off; a run against production with verification disabled is measuring something it cannot prove is the right server.

Storage

SettingDefaultDoes
Runs to keep50Older runs are pruned. Lite keeps one.
Log levelwarningHeat logs to storage/logs/heat.log

Config file

Everything can be set from config/heat.php in the usual Craft way, which is the right place for anything that differs per environment — the machine overrides especially.

<?php

return [
    '*' => [
        'defaultMix' => 'browsing',
        'samplesPerScenario' => 12,
    ],
    'dev' => [
        // Model production from a laptop.
        'phpWorkers' => 64,
        'cpuCores' => 16,
        'availableMemoryMb' => 32768,
        'dbMaxConnections' => 500,
        'verifyTls' => false,
    ],
    'production' => [
        'allowProduction' => true,
    ],
];