So you configure nginx to balance the requests between the three Thin instances. So in the vhost-config for the application you setup nginx to distribute the requests between the thin instances which is configured to run on port 3000, 3001 and 3002. This means that if instance 1 (3000) goes down for example hopefully instance 2 and 3 still runs and the site won't be down. ### Nginx Example config upstream domain1 { server 127.0.0.1:3000; server 127.0.0.1:3001; server 127.0.0.1:3002; } server { listen 80; server_name domain.com; ... } More on configuring Nginx and Thin can you find [here](http://articles.slicehost.com/2008/5/27/ubuntu-hardy-nginx-rails-and-thin). ### Problem & Solution In this case my [Ruby on Rails](http://rubyonrails.org/) application was up in production mode. The client had some tiny copy changes that had to be made and I did not know of any easy ways to restart the server and avoiding down time. All I ever did before was to restart the Thin server with: sudo thin restart -C /etc/thin/mydomain.yml That had worked until we wen't live and wanted to avoid as much down time as possible. The solution to this is to restart each instance by itself instead of restarting all instances at the same time. So by specifying which port to restart you can restart you're ruby applications without having any down time. Here is how you do it sudo thin restart -C /etc/thin/mydomain.yml -o 3000 Wait until it's done and run the same command but change 3000 to the next port for your instances, in my case 3001 and then continue to 3002. It's a bit of manual work but at least you avoid down time! I'm sure someone already have a script for this that parses the Thin config file and restarts the instances one at the automatically but I could not find one.