Can someone explain "heroku ps:scale web=1"

This command does not deploy the app. It starts it, after you have deployed.

When you deploy your application, heroku creates a "slug". A runnable zipped version of your app which is then stored. You can then start "dynos", which take your current slug and start it on one of heroku's servers.

Running heroku ps:scale web=1 will scale your app to one running dyno, basically meaning you have one server running your app currently.

If you deploy your app again, a new slug will be generated and stored, and your currently running dynos will be destroyed, to be replaced by new ones with the new version of your code.


Whenever you freshly deploy your app in heroku it starts up one dyno where the app runs. Just consider it as a server. This server cant handle large number of requests all at once.

So in order to handle all these bulk requests you may want to run multiple instances of your app i.e. multiple dyno using the spare resources available in heroku just like running multiple instances in tomcat for the same application using the command (within limits ofcourse):

heroku ps:scale web=<number_dynos_u_want>

Heroku does the load-balancing for you. Thus you are able to horizontally scale your app to handle more load. Hope this clears this concept!


Though the other answers are correct, I think some might find it useful to understand the actual breakdown of the command.

  • ps is a command which prefixes many commands affecting dynos (~virtual machine instances); I'm assuming it's related to the linux ps command, which stands for "process status."
  • ps:scale is used to increase the number of dynos running a process.
  • ps:scale web=1 specifies to run the process on 1 web dyno.

An index of Heroku CLI commands can be found here: https://devcenter.heroku.com/articles/heroku-cli-commands