2013-07-27 65 views
17

我已經將我們的堆棧轉換爲Rails 4(yea!)是彪馬唯一的多線程導軌4 HTTP服務器?

我期待利用線程安全代碼。

彪馬工程起牀,停止它似乎是一個不同的問題:(

彪馬是唯一的多線程軌

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

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

這不屬於「程序員通常使用的軟件工具」的標題,因此不屬於「脫離主題」? –

+1

我在灰色區域查了一下關於頁面 - http://stackoverflow.com/about possilby,但我認爲它有資格。 – Daniel

回答

27

號按字母順序排列:

  • Iodine HTTP/Websocket服務器& EventMachine替代方案(基於kqueue/epoll)
  • Net::HTTP::Server,儘管缺乏廣告,支持多線程
  • Phusion Passenger已經支持多線程since v4 beta
  • Rainbows!支持多個併發模型,包括多線程
  • ReelCelluloid -backed「 「服務器」,它也適用於多線程應用程序,並提供傳統的多線程hreaded阻塞I/O支持太」
  • Thin具有螺紋模式,其可通過使--threaded或通過適當的配置文件中設置threaded: true(被使能例如bundle exec thin start --threaded
  • WEBrick是它自己的多線程,所以它作爲一個選項被淘汰是不公平的;如果您使用的是Rails嵌入式版本,則需要monkey-patch Rails::Server to enable multi-threading
  • Zbatery基於Rainbows!並支持所有併發模式的彩虹!支持目前MRI的Ruby只運行一個線程

注意在時間運行,由於其global interpreter lock (GIL)。只有通過使用不同的Ruby運行時(例如JRubyRubinius)才能真正能夠利用多線程,這些運行時提供對本地線程的訪問。如果您決定使用JRuby,有幾個JVM-dependent servers worth exploring

+0

謝謝!這幫助了很多 – Daniel

+0

列表中的另一個:[iodine](https://github.com/boazsegev/iodine)也支持多線程和多進程。 – Myst

+0

是不是WeBrick單線程? –