This add-on is operated by Adamlogic, LLC
Advanced autoscaling for every language and every dyno type.
Last updated March 24, 2022
Table of Contents
Judoscale is an add-on for autoscaling your Heroku app.
Autoscaling simply means adding or removing dynos automatically to avoid slowdowns and avoid unnecessary costs. When autoscaling via Judoscale, your app will run with an optimal dyno configuration.
Judoscale supports any language or framework on Heroku including Ruby, Node, Java, Python, PHP, Go, and Scala. Judoscale will autoscale them all.
How Does It Work?
Judoscale subscribes to your application’s log drain. Your logs are never persisted. Judoscale extracts metrics from your Heroku router logs in order to calculate response time and throughput. Everything else is ignored and discarded.
Additional metrics such as request queue time and job queue time (for worker dynos) are handled by language-specific adapter libraries (coming soon). These libraries are optional, and Judoscale can autoscale your web dynos without any additional installation.
Provisioning the Add-on
Attach Judoscale to a Heroku application via the CLI:
Reference the Judoscale Elements Page for a list of available plans and regions.
$ heroku addons:create judoscale Creating judoscale on sharp-mountain-4005... free Your add-on has been provisioned successfully
After provisioning Judoscale, the
JUDOSCALE_URL config var is available in the attached app’s configuration. The URL is used by language-specific adapter libraries if installed.
Your application is immediately ready to autoscale. You can turn on autoscaling in the Judoscale UI.
The Judoscale UI
Access the Judoscale UI via the CLI:
$ heroku addons:open judoscale Opening judoscale for sharp-mountain-4005
or by visiting the Heroku Dashboard. In the dashboard, select your application and then select Judoscale from the Add-ons menu. You can configure web dyno autoscaling and review the current response time and throughput for your web dynos.
Before turning on autoscaling, adjust your response time range and dyno range for your app. Time range and dyno range are unique for each app.
Response Time Range
Your response time range (or queue time range if you’ve installed an adapter library) is how Judoscale determines when to scale your application. Your backend performance (your application code) determines what is an acceptable response time.
For example, if you’re running a Node app, and requests typically take 200-500 ms to process within Node, an ideal response time range for Judoscale can be 500ms-1000ms. If response times reach 1000 ms, more dynos are added. When response times settle back below 500 ms, dynos are slowly removed.
Use the response times shown in the chart as a reference to set your response time range. You can fine tune the response time range after you turn on autoscaling.
Dyno range determines how far Judoscale scales your application. For example, a dyno range of 2–9 dynos could autoscale up to 9 dynos, but no further. Likewise, Judoscale would never autoscale this app below 2 dynos.
Regardless of your dyno range setting, you can always manually scale your app outside that range using the Heroku CLI or the Resources page in your Heroku dashboard.
Applications with multiple running dynos will be more redundant against failure, but autoscaling with Judoscale allows your app to safely run a single dyno. Judoscale will detect performance problems with a single dyno and immediately trigger autoscaling to add more dynos.
Migrating between Plans
heroku addons:upgrade command to migrate to a new plan.
$ heroku addons:upgrade judoscale:newplan -----> Upgrading judoscale:newplan to sharp-mountain-4005... done, v18 ($49/mo) Your plan has been updated to: judoscale:newplan
Removing the Add-on
Judoscale can be removed via the CLI.
This destroys all associated data and can’t be undone!
$ heroku addons:destroy judoscale -----> Removing judoscale from sharp-mountain-4005... done, v20 (free)
Submit all Judoscale support and runtime issues via one of the Heroku Support channels, or email firstname.lastname@example.org.