| Unicorn | |
|---|---|
| Original author | Eric Wong |
| Developer | Unicorn developers |
| Initial release | March 11, 2009 |
| Stable release | |
| Repository | yhbt.net/unicorn/ |
| Written in | Ruby |
| Operating system | Cross-platform |
| Available in | English |
| Type | Web server |
| License | GPLv2+ or Ruby 1.8 |
| Website | yhbt |
Unicorn is a Rack HTTP server to serve Ruby web applications on a UNIX operating environment. It is optimised to be used with nginx. It is based on now deprecated Mongrel 1.1.5 from 2008.
Unicorn uses a master/worker architecture, where a master process forks worker processes and controls them. The application runs in a single thread. [2]
Unicorn was considered to be “one of the most popular servers for Rails”. [3] [2]
Twitter started to test Unicorn in 2010. [4]
This server is shipped with Discourse. Their system administrator Sam Saffron noted Unicorn was reliable, as it reaps unresponsive workers. [5]
Unicorn has inspired other projects like Gunicorn, a fork to run Python applications.
As of 2018, projects tend to favour Puma. [6] The Heroku hosting provider recommends since 2015 to migrate from Unicorn to Puma. [7] Deliveroo published a benchmark comparing the two servers and concluded “Puma performs better than Unicorn in all tests that were either heavily IO-bound or that interleaved IO and CPU work”, but that Unicorn was still slightly better performing in pure CPU situations. [8] GitLab switched to Puma from Unicorn in 2020. [9]