I've gotten our stack converted to Rails 4 (yea!)
and I'm looking to take advantage of the thread-safe code.
Puma works in getting up, stopping it appears to be a different problem :(
Is Puma the only multi-threaded rails?
Thin -> EventMachine
Unicorn -> Forking
Puma -> multi-threaded
Mongrel -> don't care
Webbrick -> don't care
No. In alphabetical order:
Iodine
a HTTP / Websocket Server & EventMachine alternative (kqueue/epoll based)Net::HTTP::Server
, despite the lack of advertising, supports multithreading--threaded
or by settingthreaded: true
in the appropriate configuration file (e.g.bundle exec thin start --threaded
)Rails::Server
to enable multi-threadingNote that currently MRI Ruby runs only one thread runs at a time due to its global interpreter lock (GIL). You'll only be truly able to exploit multithreading by using a different Ruby runtime such as JRuby or Rubinius, which provide access to native threads. If you decide to go with JRuby, there are several JVM-dependent servers worth exploring.
Trinidad is nice. A very powerful server for jRuby development:
http://blog.jruby.org/2012/04/two-apps-one-trinidad/
http://railscasts.com/episodes/377-trinidad?view=comments
Here are some good benchmarks (the Trini server beats puma):
http://carlhoerberg.github.io/blog/2012/03/31/jruby-application-server-benchmarks/
A nice Trinidad Server setup tutorial:
http://blog.jruby.org/2012/04/two-apps-one-trinidad/