ruby-on-rails - puma是唯一的多线程rails 4 http服务器吗?

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

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

并且我正在寻找利用线程安全代码的优势。

彪马起床工作,阻止它似乎是一个不同的问题:(

Puma是唯一的多线程 rails 吗?

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

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

最佳答案

否。按字母顺序:

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

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

    关于ruby-on-rails - puma是唯一的多线程rails 4 http服务器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17902386/

    相关文章:

    ruby-on-rails - 如何从另一个辅助方法中调用 Rails 辅助方法?

    vb.net - 写入时同步锁定?读?或两者?

    c++ - 为什么我不能使用 chrono 库?

    ruby-on-rails - 无法在 Rails 4 中自动加载常量 API Controller

    ruby-on-rails - 在子目录中创建 Rails Controller

    html - 如何将 HTML/CSS 代码插入 iframe?

    jquery - 如何通过单击复选框的标签来发送数据

    ruby-on-rails - 推荐用于存储颜色选项的数据库模式

    c++ - 在 64 位机器上,我可以安全地并行操作 64 位四字的各个字节吗?

    ruby-on-rails - CarrierWave 文件上传在 rails 中不起作用