Puma是唯一的支持多线程Rails 4 HTTP服务器吗?

22

我已经把我们的堆栈转换为Rails 4(太好了!)

现在,我想利用线程安全的代码。

Puma可以启动,但停止似乎是一个不同的问题 :(

Puma是唯一的多线程Rails吗?

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

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

1
这难道不属于“程序员常用的软件工具”范畴,因此不算“离题”吗? - Brad Werth
1
我查看了关于页面 - http://stackoverflow.com/about ,可能有点灰色地带,但我认为它符合资格。 - Daniel
2个回答

32

按字母顺序,没有。

  • Iodine 是一个基于 kqueue/epoll 的 HTTP/Websocket 服务器和 EventMachine 替代品
  • Net::HTTP::Server,尽管没有广告,但支持多线程
  • Phusion Passenger 自 v4 beta 版本开始 支持多线程
  • Rainbows! 支持多种并发模型,包括多线程
  • Reel 是一个基于 Celluloid 的 "事件驱动" 服务器,"也非常适用于多线程应用程序,并提供传统的多线程阻塞 I/O 支持"
  • Thin 有一个线程模式,可以通过传递 --threaded 或在适当的配置文件中设置 threaded: true 来启用(例如:bundle exec thin start --threaded
  • WEBrick 自身是多线程的,因此将其排除为选项是不公平的;如果使用的是嵌入式 Rails 版本,则需要 猴子补丁 Rails::Server 以启用多线程
  • Zbatery 基于 Rainbows! 并支持 Rainbows! 支持的所有并发模型

注意,目前由于其全局解释器锁(GIL)MRI Ruby一次只能运行一个线程。您只有通过使用不同的Ruby运行时,例如JRubyRubinius,才能真正利用多线程,这些运行时提供对本地线程的访问。如果您决定使用JRuby,则有几个依赖于JVM的服务器值得探索


谢谢!这帮了大忙。 - Daniel
又有一个加入列表了:iodine同样支持多线程和多进程。 - Myst
它绝对是多线程的。请查看上面的链接或源代码:https://github.com/nahi/webrick/blob/master/lib/webrick/server.rb - fny
哇,今天我才知道WEBrick是多线程的!而且它似乎表现得很好。 - NobodysNightmare

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接