是puma唯一的multithreading导轨4 http服务器?

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

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

Puma工作起床,停止它似乎是一个不同的问题:(

Puma是唯一的multithreading导轨吗?

Thin -> EventMachine Unicorn -> Forking Puma -> multi-threaded Mongrel -> don't care Webbrick -> don't care 

不。按字母顺序排列:

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

请注意,由于其全局解释器锁定(GIL) ,目前MRI Ruby一次只运行一个线程 。 您只能通过使用不同的Ruby运行时(例如JRuby或Rubinius )来提供对本机线程的访问,从而真正能够利用multithreading。 如果你决定使用JRuby,有几个值得探索的JVM依赖服务器 。

特立尼达很好。 一个非常强大的jRuby开发服务器:

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

http://railscasts.com/episodes/377-trinidad?view=comments

这里有一些很好的基准测试(Trini服务器击败美洲狮):

http://carlhoerberg.github.io/blog/2012/03/31/jruby-application-server-benchmarks/

一个不错的Trinidad Server安装教程:

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