Rainbows! is an HTTP server for sleepy Rack applications. It is based
Unicorn, but designed to handle applications that expect long
request/response times and/or slow clients.
For Rack applications not heavily bound by slow external network
dependencies, consider Unicorn instead as it simpler and easier to
improved documentation all around, suggestions/comments to further
improve documentation is greatly welcome at:
added GPLv3 option to the license (now (Ruby|GPLv2|GPLv3), though
Unicorn is still (Ruby|GPLv2) for now)
added client_header_buffer_size config directive (default 1K)
small default header buffer size (16K => 1K) to reduce memory usage,
Rails apps with cookie sessions may want to increase this (~2K)
all concurrency models default to 50 connections per process
all concurrency models with a secondary :pool_size parameter also
default to 50 (threads/fibers/whatever)
RLIMIT_NOFILE and RLIMIT_NPROC are automatically increased if needed
Rainbows::ThreadTimeout middleware rewritten, still not recommended,
lazy people should be using Unicorn anyways
Several experimental Linux-only edge-triggered epoll options:
XEpollThreadSpawn, XEpollThreadPool, XEpoll, and Epoll.
The latter two were in previous releases but never announced.
These require the “sleepy_penguin”, “raindrops”, and “sendfile”
Rainbows::Fiber::IO* APIs all deprecated, Rainbows! will avoid
having any concurrency model-specific APIs in the future and
also avoid introducing new APIs for applications.
Fiber-based concurrency models are no longer recommended, they’re
too fragile for most apps, use at your own risk (they’ll continue to
be supported, however). Linux NPTL + Ruby 1.9 is pretty lightweight
and will be even lighter in Ruby 1.9.3 if you’re careful with stack
usage in your C extensions.