Heroku is a cloud platform-based service which provides users with a platform to manage run and develop applications without having to build and maintain infrastructure. It has been in development since 2007 and now it supports a ton of languages. Quite recently, a lot of reports have been coming in of an “Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch” Error.
In this article, we will discuss some of the reasons due to which this error is triggered and also provide you with viable solutions to fix it completely. Keep in mind to follow the instructions carefully and accurately to avoid conflict.
What Causes the “Error R10(Boot Timeout)” on Heroku?
After receiving numerous reports from multiple users, we decided to investigate the issue and devised a set of solutions to fix them completely. Also, we looked into the reasons due to which it is triggered and listed them as follows.
- Timelimit: There is a time limit for the amount of time that the application takes to startup. When this time limit is breached, the error might be triggered. Therefore, the startup of the application must be reduced to a time limit lower than the time limit or to extend the time limit.
- Invalid Procfile: In some cases, there might be an issue with the Procfile where it might not be configured properly. If the Procfile isn’t configured properly, this error might be triggered.
- Loading Gems: There might be an increased number of Gems being loaded at the startup of the application. Therefore, you must limit the number of Gems to as low as possible at startup. This can be done without affecting the load up of Gems.
Now that you have a basic understanding of the nature of the problem, we will move on towards the solutions. Make sure to implement these in the specific order in which they are listed to avoid conflict.
Solution 1: Increasing Time Limit
The time limit for the Bootup of the application can be increased. We will be increasing it using a “Heroku Forward” file which also contains the instructions for achieving this higher timelimit. Download this file which contains all the important files that you need to increase the time limit. It also includes a Readme file that contains the instructions for implementing it.
Solution 2: Changing Procfile Settings
In some cases, the issue might be triggered due to an invalid configuration with the “Procfile”. Therefore, in this step, we will be changing a line in the Procfile. For that:
- Open the Procfile.
- There should be a line in the Procfile similar to the following one.
web: bundle exec thin start
- Change this line to the following one.
web: bundle exec thin start -p $PORT
- Save your changes and check to see if the issue persists.
Solution 3: Trimming Gems at Startup
It is possible that extra Gems are being loaded at the startup of the application. Therefore, in this step, we will be identifying and trimming the extra Gems at startup. For that:
- Download this file and read the instructions to identify extra Gems being loaded at startup.
- Add the following line to the Gems that are extra and don’t need to be loaded at startup.
require => false
- This will prevent that Gem from being loaded at startup.
- Check to see if the issue persists.