Is puma the ONLY multi-threaded rails 4 http server?

前端 未结 2 1635
醉话见心
醉话见心 2020-12-03 02:51

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

相关标签:
2条回答
  • 2020-12-03 03:31

    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/

    0 讨论(0)
  • 2020-12-03 03:32

    No. In alphabetical order:

    • Iodine a HTTP / Websocket Server & EventMachine alternative (kqueue/epoll based)
    • Net::HTTP::Server, despite the lack of advertising, supports multithreading
    • Phusion Passenger has supported multithreading since v4 beta
    • Rainbows! supports multiple concurrency models, including multithreading
    • Reel is a Celluloid-backed "evented" server, which "also works great for multithreaded applications and provides traditional multithreaded blocking I/O support too"
    • Thin has a threaded mode, which can be enabled by passing --threaded or by setting threaded: true in the appropriate configuration file (e.g. bundle exec thin start --threaded)
    • WEBrick is on its own multithreaded, so it's not fair to eliminate it as an option; if you're using the Rails-embedded version, you'll need to monkey-patch Rails::Server to enable multi-threading
    • Zbatery is based on Rainbows! and supports all concurrency models that Rainbows! supports

    Note 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.

    0 讨论(0)
提交回复
热议问题