Incident handling
This page is for engineers on call for an Exponential site. It gives a sequence for any incident and points to the runbooks for the common ones. It does not replace your organization's incident process; it fills in the Exponential-specific steps.
Contents
- The first ten minutes
- Symptoms and the tools for them
- Stopping the damage
- Fixing: roll forward
- Security incidents
- After the incident
The first ten minutes
- Confirm and scope. Request the front page and the administration login from outside. The front page may be served from a cache while the database is down, so the login page tells you more (Health checks and uptime).
- Check the servers.
./console exp:velocity statusfor Velocity; the PHP-FPM service and the database server otherwise. - Read the newest errors. Setup > Log files, or
./console exp:logs; a visitor's error reference leads to the lines of their request (Finding an error by its reference). - Ask what changed. The audit trail records deploys, settings writes and cache clears with who and when:
./console exp:audit tail --allow-root-user. - Decide: stop the damage first, or fix directly?
Symptoms and the tools for them
| Symptom | First tool | Runbook |
|---|---|---|
| The site does not answer | server status, error.log | Site down |
| Pages are slow | debug bar on your address, exp:benchmark kernel | Slow site |
A blank page or PHP output instead of the site, vendor/ missing | repair from the browser (Repair) | Site down |
| Velocity does not start | exp:velocity status, its log | Velocity will not start |
| A change "did not work" | the deploy order: code loaded before caches cleared | Deploying a change |
| Disk full | var/ sizes in Setup > Caches, log archives | Disk full |
| A certificate expired | the HTTPS configuration of the engine | Certificate expiry |
| A suspected compromise | security.log, the audit trail | Compromised site |
Stopping the damage
Maintenance mode takes the public site offline with a
503andRetry-After, and brings it back with one command:php bin/php/maintenance.php on --message="Back at 06:00" --until=2h --allow-root-user php bin/php/maintenance.php off --allow-root-userSwitch off the extension or setting that the change introduced, through
settings/override/and an INI cache clear (and a Velocity restart).Restore from backup when data is damaged (Restore from backup).
Fixing: roll forward
Fix forward with a new commit and, for a release, a new version. A published tag or release is never moved, replaced or re-cut, even when it is the cause; the next version's notes say what was wrong with the previous one (Version numbers and immutable tags). On an installation made of Git clones, you can use a fix before it is released (Develop with Git).
Security incidents
- A vulnerability in Exponential itself is reported privately to the address in
SECURITY.md, not in the public issue tracker. Include the version, the engine, the database, what an attacker can do and the steps to reproduce, and leave out passwords, secrets and personal data. - Verify the audit trail's integrity (
./console exp:audit verify --allow-root-user, exit status 1 when a chain is broken) before you rely on it as evidence. - Rotate the secrets an attacker may have seen, from
settings/override/.
After the incident
- Write down the timeline, the cause, what detected it and what would have detected it earlier.
- Add the test that would have caught it (Testing strategy).
- If the cause was a behavior change, check that its upgrade notes in
doc/eng-us/bc/6.0/said what to do; if not, correct them (Changelogs and upgrade notes). - File a public issue for a bug in the software, with the diagnostics the help's Report an error page prepares (When something goes wrong).
Related pages
- Observability: logs, debug bar and audit trail
- Runbooks for hosts
- Troubleshooting
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
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.