Improved Concurrency for Heroku Dynos

A Rack application running on Heroku can improve performance by using different application servers with different performance characteristics.

Some good choices include Thin (evented I/O), Unicorn (multi-process) and Puma (multi-threaded).

The exact configuration settings will vary by application and how much memory each app takes. A default Rails app with a basic scaffold can easily support 4 unicorn workers or 4 puma threads. A small Sinatra app can support several times that number.