Rainbows! is an HTTP server for sleepy Rack applications. It is based
on
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
debug.
- http://rainbows.rubyforge.org/
- [email protected]
- git://bogomips.org/rainbows.git
Changes:
-
improved documentation all around, suggestions/comments to further
improve documentation is greatly welcome at:
[email protected] -
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”
RubyGems
=== Deprecations
-
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.
Enjoy!