Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [3.1.0] - 2026-09-04

### Added

- **A built-in runtime PHP-FPM autotuner.** Until now cbox-init sized php-fpm
only once, at boot, from a static workload profile, and never touched it again
as traffic changed. The new `global.fpm_tune` block embeds
[fpm-tune](https://github.com/cboxdk/fpm-tune): it measures live per-worker
memory (PSS, which does not double-count shared OPcache), sizes each pool on the
p95 hybrid, and in apply mode rewrites a pool drop-in and reloads php-fpm with
SIGUSR2 (a graceful reload, never a restart). Every change is validated against
a throwaway copy, written atomically, and rolled back if the master does not
come back. The boot calculator stays as the seed: it gives php-fpm a sane
`pm.max_children` before it starts, and the loop owns the number from there. It
runs as a background service tied to the serve lifecycle and is stopped before
php-fpm is drained on shutdown. Apply mode is the default; set `mode: advisory`
to observe and only recommend. See
[PHP-FPM Auto-Tuning](docs/configuration/php-fpm-autotune.md) and
`configs/examples/php-fpm-autotune.yaml`. A container integration test
(`make test-e2e-fpm-tune`, run in CI) exercises the whole chain: discover,
enable the status page, size, resize under load, and reload without changing the
master pid.

## [3.0.0] - 2026-08-27

### Added
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Production-grade PID 1 process manager for Docker containers with Laravel-first

- **PID 1 Process Manager** - Proper signal handling and zombie process reaping
- **Multi-Process Orchestration** - Manage PHP-FPM, Nginx, Horizon, Reverb, and workers
- **PHP-FPM Auto-Tuning** - Intelligent worker calculation based on container limits
- **PHP-FPM Auto-Tuning** - Sizes `pm.max_children` at boot from container limits, and optionally keeps it right at runtime with a built-in [fpm-tune](https://github.com/cboxdk/fpm-tune) loop that measures live worker memory and reloads php-fpm (SIGUSR2, never a restart)
- **Dependency Management** - DAG-based process startup ordering
- **Health Monitoring** - TCP, HTTP, and exec-based health checks
- **Scheduled Tasks** - Built-in cron-like scheduler
Expand Down
Loading