我已经将我们的堆栈转换为 Rails 4(是的!)
我正在寻找利用线程安全代码的优势。
彪马在起床,停止它似乎是一个不同的问题:(
Puma 是唯一的多线程导轨吗?
Thin -> EventMachine
Unicorn -> Forking
Puma -> multi-threaded
Mongrel -> don't care
Webbrick -> don't care
我已经将我们的堆栈转换为 Rails 4(是的!)
我正在寻找利用线程安全代码的优势。
彪马在起床,停止它似乎是一个不同的问题:(
Puma 是唯一的多线程导轨吗?
Thin -> EventMachine
Unicorn -> Forking
Puma -> multi-threaded
Mongrel -> don't care
Webbrick -> don't care
没有。按字母顺序:
Iodine
HTTP / Websocket 服务器和 EventMachine 替代方案(基于 kqueue/epoll)Net::HTTP::Server
,尽管没有广告,但支持多线程--threaded
或threaded: true
在适当的配置文件中设置来启用(例如bundle exec thin start --threaded
)Rails::Server
以启用多线程请注意,由于其全局解释器锁 (GIL) ,当前MRI Ruby 一次只运行一个线程。只有使用不同的 Ruby 运行时(例如JRuby或Rubinius )才能真正利用多线程,它们提供对本地线程的访问。如果您决定使用 JRuby,那么有几个依赖于 JVM 的服务器值得探索。
特立尼达不错。一个非常强大的 jRuby 开发服务器:
http://blog.jruby.org/2012/04/two-apps-one-trinidad/
http://railscasts.com/episodes/377-trinidad?view=comments
以下是一些很好的基准测试(Trini 服务器击败了 puma):
http://carlhoerberg.github.io/blog/2012/03/31/jruby-application-server-benchmarks/
一个不错的特立尼达服务器设置教程: