An app keeps restarting
An application that starts, dies and starts again. The engine retries with backoff, so this can run for a long time without anyone noticing — the log is where it shows.
First: is it your code or the platform?
!! app example.com — start failed — will retry on request (backoff): <your error>
Whatever follows the colon is your application’s own error, thrown while starting. The engine is reporting it, not causing it — and the previous healthy instance keeps serving while it retries, so this is not an outage.
Killed for memory (.NET)
Each application runs under a cgroup with a memory ceiling. Exceeding it kills the process rather than letting it exhaust the host — the failure is contained to the application that caused it.
A restart loop with no application error in between usually means this. Everything served is memory-resident, so the working set is your application plus its decrypted build and static assets.
| Log line | Meaning |
|---|---|
[CGROUP] memory.max not applied |
The limit could not be set. The application may be running unconfined — investigate before treating it as fine. |
[TENANT] refusing restart: previous generation could not be terminated |
The prior instance would not drain, so the engine will not start a second copy against a stale limit. Restart the engine. |
[CGROUP] still populated after kill — not deleting |
Something in that application will not die. Usually a child process. Restarting the engine clears it. |
Never becomes ready
The supervisor waits a bounded time for an application to report ready before treating the start as failed. An application doing slow work before it listens — a migration, a large cache warm — can exceed it.
LF_READY_TIMEOUT_SEC raises the window. The better fix is usually to start listening
first and warm afterwards.
Node: restarts after every request
Not a crash. start failed — will retry on request means the application never started
successfully, so each incoming request triggers another attempt. Fix the underlying startup error and it stops.
Restarts only under load
Memory that grows with traffic — a leak, or an unbounded in-process cache. Under Standard the working set is per worker, so what looks survivable on one core can hit the cap on four.
See Worker models: in-process caches are one of the things that behave differently once there is more than one worker.