# Unicorn

> A Rails process per slot: simple and robust, and memory-heavy. One waiting request holds a whole process, so it refuses realtime connections.

## Trade-offs

| Axis | Score |
| --- | --- |
| Throughput | |
| Tail latency | |
| Memory | |
| Velocity | |
| Resilience | |
| Operability | |

## Frameworks

- [Rails](https://wiki.playquorum.dev/frameworks/rails.md)
- [Sinatra](https://wiki.playquorum.dev/frameworks/sinatra.md)

## Engineering terms

- [Process per request](https://wiki.playquorum.dev/glossary/process-per-request.md)
- [Shared nothing](https://wiki.playquorum.dev/glossary/shared-nothing.md)

## Facts

Unicorn
- **Language:** Ruby
- **Concurrency:** One process per request
- **Speed:** ×0.25
- **Memory:** 180 MB
- **Startup:** 10 s
- **Warm-up:** 15 s
- **GC pause:** None
- **Unlocked by:** [Ruby](https://wiki.playquorum.dev/research/lang-ruby.md)
- **Velocity:** ×1.1
- **Salary:** ×1.1
- **Build:** 1 min

## See also

- [Runtimes and frameworks](https://wiki.playquorum.dev/runtimes.md)
- [Rails](https://wiki.playquorum.dev/frameworks/rails.md)
- [Sinatra](https://wiki.playquorum.dev/frameworks/sinatra.md)

Source: https://wiki.playquorum.dev/runtimes/unicorn
