In a Compose healthcheck, start_period defines a startup window during which a failing probe does not count toward retries and does not mark the container unhealthy. It is not a delay before probing begins: probes still run on the interval during that window, and the first success ends the start period immediately.
The consequence people miss is that once start_period elapses, the container has the full retries budget still available, but a service that is genuinely slower than start_period will now begin accumulating failures at the normal interval. Sizing start_period from average startup time rather than worst case produces intermittent unhealthy marks under load.
Docker Engine 25 added start_interval, a shorter probe interval used only during the start period, so a service can be detected as ready quickly without setting a short interval for its whole lifetime. Set start_period to a pessimistic bound on cold start, keep interval at the steady-state cadence, and use start_interval for fast readiness detection.