【问题标题】:Is puma the ONLY multi-threaded rails 4 http server?puma 是唯一的多线程 rails 4 http 服务器吗?
【发布时间】:2013-07-27 23:09:36
【问题描述】:

我已将我们的堆栈转换为 Rails 4(是的!)

我希望利用线程安全代码。

彪马在起床,停止它似乎是一个不同的问题:(

Puma 是唯一的多线程导轨吗?

Thin -> EventMachine
Unicorn -> Forking
Puma -> multi-threaded

Mongrel -> don't care
Webbrick -> don't care

【问题讨论】:

  • 这不属于“程序员常用的软件工具”的标题,因此不会“离题”吗?
  • 我检查了关于页面 - stackoverflow.com/about 可能在灰色区域,但我认为它符合条件。

标签: ruby-on-rails multithreading ruby-on-rails-4 thin puma


【解决方案1】:

没有。按字母顺序:

  • Iodine HTTP / Websocket 服务器和 EventMachine 替代方案(基于 kqueue/epoll)
  • Net::HTTP::Server,尽管没有广告,但支持多线程
  • Phusion Passenger已支持多线程since v4 beta
  • Rainbows! 支持多种并发模型,包括多线程
  • ReelCelluloid 支持的“事件”服务器,“也适用于多线程应用程序并提供传统的多线程阻塞 I/O 支持”
  • Thin 具有线程模式,可以通过传递--threaded 或在相应的配置文件中设置threaded: true 来启用(例如bundle exec thin start --threaded
  • WEBrick 本身是多线程的,因此将其作为选项消除是不公平的;如果您使用的是 Rails 嵌入式版本,则需要 monkey-patch Rails::Server to enable multi-threading
  • Zbatery 基于彩虹!并支持 Rainbows 的所有并发模型!支持

请注意,由于其global interpreter lock (GIL),目前MRI Ruby 一次只运行一个线程。只有使用不同的 Ruby 运行时(例如 JRubyRubinius)才能真正利用多线程,它们提供对本地线程的访问。如果你决定使用 JRuby,有几个JVM-dependent servers worth exploring

【讨论】:

【解决方案2】:

特立尼达不错。一个非常强大的 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/

一个不错的 Trinidad Server 设置教程:

http://blog.jruby.org/2012/04/two-apps-one-trinidad/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2020-12-11
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 2016-09-13
    相关资源
    最近更新 更多