Unicorn is a Unix and LAN/localhost-optimized fork of the Mongrel HTTP server. It is takes full advantage of functionality exclusive to Unix-like operating systems. It will reap and restart workers that die from broken apps, and there is no need to manage multiple processes yourself. Load balancing is done entirely by the operating system kernel. Requests never pile up behind a busy worker. The server does not care if your application is thread-safe or not, as workers all run within their own isolated address space and only serve one client at a time. All Rack applications are supported along with pre-Rack versions of Ruby on Rails via a Rack wrapper. It also supports atomic log cycling, nginx-style binary re-execution without losing connections, before_fork and after_fork hooks, and optional copy-on-write-friendly memory management.
| Tags | Ruby HTTP Servers |
|---|---|
| Licenses | GPLv2 |
| Operating Systems | Linux Unix |
| Implementation | Ruby Ragel C |
Recent releases


Release Notes: Occasional Errno::ENOTCONN errors are now ignored, as nothing can be done about them (even on LANs). Client sockets are now shutdown() properly, even on client-aborted uploads.


Release Notes: This release increases PATH_INFO (a.k.a. REQUEST_PATH) to 4096 (from 1024). Apps which fork() (but do not exec()) internally for background tasks now indicate the end-of-request immediately after writing the Rack response.


Release Notes: This release detects stale pid files if a pid is recycled by processes belonging to another user. There are also small documentation updates.


Release Notes: Minor bugfixes and documentation improvements.


Release Notes: The last-resort timeout mechanism was inaccurate and often delayed in activation since the 2.0.0 release. This has been fixed and remains power-efficient in idle situations, especially with the wakeup reduction in MRI 1.9.3+.