22

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

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

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

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

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

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

2 回答 2

32

没有。按字母顺序:

  • IodineHTTP / Websocket 服务器和 EventMachine 替代方案(基于 kqueue/epoll)
  • Net::HTTP::Server,尽管没有广告,但支持多线程
  • Phusion Passenger自 v4 beta 起就支持多线程
  • 彩虹!支持多种并发模型,包括多线程
  • Reel是一个由赛璐珞支持的“事件”服务器,它“也适用于多线程应用程序并提供传统的多线程阻塞 I/O 支持”
  • Thin有一个线程模式,可以通过传递--threadedthreaded: true在适当的配置文件中设置来启用(例如bundle exec thin start --threaded
  • WEBrick本身是多线程的,因此将其作为选项消除是不公平的;如果您使用的是 Rails 嵌入式版本,则需要猴子补丁Rails::Server以启用多线程
  • Zbatery基于彩虹!并支持 Rainbows 的所有并发模型!支持

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

于 2013-08-26T07:32:50.113 回答
1

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

一个不错的特立尼达服务器设置教程:

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

于 2014-02-11T16:26:58.027 回答