是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安装教程: