2013-07-27 36 views
17

Tôi đã chuyển đổi ngăn xếp thành Rails 4 (yea!)Có phải puma CHỈ đa đường ray 4 máy chủ http không?

và tôi đang tìm cách tận dụng mã an toàn của luồng.

Puma làm việc trong thức dậy, dừng nó dường như là một vấn đề khác nhau :(

là Puma chỉ đường ray Multi-threaded

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

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

Điều này sẽ không nằm trong nhóm "công cụ phần mềm thường được các lập trình viên sử dụng" và do đó không phải là "chủ đề không chính xác"? –

+1

Tôi đã kiểm tra trang giới thiệu - http://stackoverflow.com/about possilby một chút trong vùng màu xám, nhưng tôi nghĩ nó đủ điều kiện. – Daniel

Trả lời

27

số Trong thứ tự chữ cái:

  • Iodine Máy chủ HTTP/Websocket & Sự kiệnMáy thay thế (kqueue/epoll based)
  • Net::HTTP::Server, bất chấp sự thiếu quảng cáo, hỗ trợ đa luồng
  • Phusion Passenger đã hỗ trợ đa luồng since v4 beta
  • Rainbows! hỗ trợ mô hình đồng thời nhiều, bao gồm đa luồng
  • Reel là một Celluloid -backed " evented "server, mà" cũng hoạt động tốt cho các ứng dụng đa luồng và cung cấp multitread truyền thống hreaded blocking I/O hỗ trợ quá"
  • Thin có một chế độ ren, có thể được kích hoạt bằng cách thông qua --threaded hoặc bằng cách đặt threaded: true trong file cấu hình thích hợp (ví dụ bundle exec thin start --threaded)
  • WEBrick được đặt ở chế độ đa luồng, vì vậy sẽ không công bằng nếu loại bỏ tùy chọn này; nếu bạn đang sử dụng phiên bản được nhúng Rails, bạn cần phải monkey-patch Rails::Server to enable multi-threading
  • Zbatery dựa trên cầu vồng! và hỗ trợ tất cả các mô hình đồng thời mà Rainbows! hỗ trợ

Lưu ý rằng hiện MRI của Ruby chạy chỉ một thread chạy tại một thời điểm do global interpreter lock (GIL) của nó. Bạn chỉ có thể thực sự khai thác đa luồng bằng cách sử dụng thời gian chạy Ruby khác nhau như JRuby hoặc Rubinius, cung cấp quyền truy cập vào các chuỗi gốc. Nếu bạn quyết định đi với JRuby, có một số JVM-dependent servers worth exploring.

+0

Cảm ơn bạn! Điều này đã giúp rất nhiều – Daniel

+0

Một số khác cho danh sách: [iodine] (https://github.com/boazsegev/iodine) cũng hỗ trợ cả đa luồng và đa quy trình. – Myst

+0

WeBrick không phải là chuỗi đơn? –

0

Trinidad đẹp.Một máy chủ rất mạnh mẽ cho sự phát triển JRuby:

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

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

Dưới đây là một số tiêu chuẩn tốt (máy chủ Trini nhịp đập puma):

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

A nice Trinidad máy chủ thiết lập hướng dẫn :

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