Should I use thin or unicorn on Heroku Cedar
Asked Answered
V

4

47

I recently 'upgraded' my app to the cedar platform on Heroku. By default, I am using thin as a web server. But I have always been tempted to use unicorn for concurrency and having my dyno dollar go father. But I worry there are some gotchas in using something other than Thin.

Does anyone have real-life experience with this decision?


Notes:

I want to know reasons why everyone shouldn't do this

Vary answered 20/3, 2012 at 17:53 Comment(1)
that's a nice article. thanks for sharingMorton
V
28

Update -- 3 months later.

I have been using unicorn in production for 3 months, and I have been very pleased. I use 4 unicorn workers per dyno.

One thing you do need to keep an eye out for is memory consumption and leakage. In effect instead of having 512MB of memory per dyno -- you have that divided by the number of heroku workers. But keeping that in mind -- it has been a great cost saver

Vary answered 22/6, 2012 at 15:9 Comment(3)
Thanks for sharing... I am evaluating the same move and even did some benchamarking for my app. It definitely looks like unicorn will result in some cost saving.Haunting
To enhance the value of your answer, include instructions or links to instructions for using Unicorn. Cuz I'm thinking that's what I'll do!Law
Do you know if there is any issue with using global variables (for example does each worker keep it's own global variables, or are they sharing/clobbering the same global scope)? This isn't a common pattern in MVC but we do use it in some places. Thanks!Progress
F
7

No reason not to do it - I use Unicorn on Heroku with much success.

Fortunna answered 20/3, 2012 at 20:15 Comment(0)
P
6

Heroku has just written a post about using Unicorn : https://blog.heroku.com/archives/2013/2/27/unicorn_rails

I'll try it now, it seems like it's the way to go, both for performance and cost saving.

Pinkster answered 28/2, 2013 at 2:30 Comment(1)
Yah. Here's why Heroku is now pushing Unicorn: https://mcmap.net/q/243837/-thin-vs-unicorn-on-herokuSilicosis
S
0

If you use Thin, and your code doesn't clear requests very quickly, then you're in trouble - since Heroku uses random routing, requests will stack up on a blocked dyno even if there are free dynos. Using Unicorn seems better, if you can handle the memory hit, because it's less likely that all of your forks will get slow requests at the same time. It doesn't solve Heroku's random-routing problem, but it should help a lot.

Links and explanations in this answer:

https://mcmap.net/q/243837/-thin-vs-unicorn-on-heroku

Silicosis answered 13/11, 2013 at 22:47 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.