Last updated April 08, 2025
This article describes the restart behavior of Heroku dynos and how to restart them.
Restart events and some Heroku error codes are not yet available for Fir apps. Subscribe to our changelog to stay informed of observability-related changes for Fir.
Manual RestartsThe dyno manager restarts all your app’s dynos when you run heroku restart
. You can also choose to restart a specific dyno, or dynos for a specific process type.
For Cedar apps, in the Common Runtime, if you run ps:stop
on dynos that are part of a scaled process, the dyno manager stops and automatically restarts them. In Private Spaces, ps:stop
terminates and replaces the dedicated instance running the dyno(s).
For Fir-generation apps, dynos are powered by Kubernetes pods. Whenever a call to ps:stop
is triggered, the corresponding dyno(s) gets terminated and replaced.
An app’s dynos automatically restart:
fir-bypass-daily-dyno-restarts
enabledThese things happen transparently and automatically on a regular basis and appear in your application logs. We delete all changes to the local filesystem when we restart the dyno.
Daily RestartsThe dyno manager automatically restarts all your app’s dynos at least once per day to help maintain the health of applications running on Heroku. The cycling happens once every 24 hours (plus up to 216 random minutes, to prevent every dyno for an application from restarting at the same time). Manual restarts and releases, whether from deploys or changing config vars, reset this 24-hour period. Cycling happens for all dynos, including one-off dynos, so dynos run for a maximum of 24 hours + 216 minutes. If you have multiple dynos, they cycle at different times based on the random 0 to 216 minutes difference. If you continually make changes to your application without a 24-hour gap, there’s no cycling at all. When a dyno cycles, you see a log entry similar to this:
2015-08-18T06:20:13+00:00 heroku[web.1]: Cycling
Fir-generation apps have the option to disable the daily automatic dyno restarts behavior. See the Heroku Labs article for info.
Dyno Command ExitsDynos also restart if the command used to start the dyno, exits. The cases when the command used to start a dyno can exit, are as follows:
A dyno crash represents any event originating with the process running in the dyno that causes the dyno to stop. That includes the process exiting with an exit code of 0 (or any other exit code).
Common Runtime Restart PolicyThe Common Runtime implements an incremental backoff policy for crashing dynos:
The cool-off period resets when:
There’s no incremental backoff policy for Cedar-generation Private Spaces. When a dyno crashes it continuously restarts with no cool-off period.
Fir Private Spaces Restart PolicyWhen a dyno is crashing, Fir uses the built-in incremental backoff policy powered by Kubernetes. Read the official Kubernetes docs to learn how pods handle problems.
Additional ReadingRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4