2013-07-31 21 views
14

Có rất nhiều cuộc nói chuyện về Puma và nó nhanh hơn Unicorn như thế nào. Nhưng, họ cũng đề cập rằng nó là phù hợp hơn cho các trường hợp của JRuby và Rubinius.Puma có tốt hơn Unicorn cho Ruby 1.9.3 và Rails 3.2 không?

Câu hỏi của tôi: Còn ứng dụng Rails 3.2 với Ruby 1.9.3 thì sao? Unicorn hoặc Puma?

+7

stack đã có sự thay đổi đó là chính sách về các vấn đề khăng khăng. Bởi vì thường xuyên hơn không, họ cung cấp câu trả lời hướng dẫn các quyết định của NOOBS như tôi. – pratski

+0

Điều gì đã xảy ra với nhận xét trước của tôi? Tôi sẽ xem xét kỹ hơn trong vài ngày tới và hy vọng có thể viết câu trả lời hữu ích. Hy vọng bạn có thể đợi cho đến khi –

+0

Bạn biết với Puma bạn sẽ cần phải kích hoạt config.threadsafe và đó là khá có thể của sâu. Nhưng nó là một cái gì đó tất cả mọi người cần phải xem xét xem nó được kích hoạt theo mặc định trong Rails 4. – pratski

Trả lời

11

Có một bài viết tuyệt vời cho kỳ lân vs puma

http://ylan.segal-family.com/blog/2013/05/20/unicorn-vs-puma-redux/

Unicorn là một máy chủ rack HTTP sử dụng các quá trình chia hai để xử lý nhiều yêu cầu đến đồng thời.

  1. Quản lý quy trình: Unicorn sẽ gặt hái và khởi động lại công nhân chết từ các ứng dụng bị hỏng. Không cần tự quản lý nhiều quy trình hoặc cổng. Unicorn có thể sinh ra và quản lý bất kỳ số lượng người lao động nào quy trình bạn chọn để mở rộng cho chương trình phụ trợ của mình.
  2. Cân bằng tải được thực hiện hoàn toàn bởi hạt nhân của hệ điều hành. Yêu cầu không bao giờ chồng chất lên sau một quy trình công nhân bận rộn.
  3. Không quan tâm nếu ứng dụng của bạn có an toàn hay không, công nhân tất cả chạy trong không gian địa chỉ riêng biệt của họ và chỉ phục vụ ứng dụng tại một thời điểm cho độ mạnh tối đa.
  4. Hỗ trợ tất cả các ứng dụng Rack, cùng với các phiên bản Pre-Rack của Ruby trên Rails thông qua trình bao bọc Rack.
  5. Built-in lại tất cả các tệp nhật ký trong ứng dụng của bạn qua tín hiệu USR1 . Điều này cho phép logrotate để xoay các tập tin một cách nhanh chóng và nguyên tắc một cách nhanh chóng thông qua đổi tên thay vì phương thức copytruncate racy và slow. Unicorn cũng thực hiện các bước để đảm bảo các mục nhập nhật ký nhiều dòng từ một yêu cầu tất cả đều nằm trong cùng một tệp.
  6. nâng cấp nhị phân kiểu nginx mà không làm mất kết nối. Bạn có thể nâng cấp Unicorn, toàn bộ ứng dụng, thư viện của bạn và thậm chí là phiên dịch Ruby mà không làm mất khách hàng.
  7. before_fork và after_fork hooks trong trường hợp ứng dụng của bạn có các nhu cầu đặc biệt khi xử lý các quy trình chia hai nhánh. Những điều này không được yêu cầu khi chỉ thị “preload_app” là sai (mặc định).
  8. Có thể được sử dụng với quản lý bộ nhớ sao chép thân thiện với ghi để lưu bộ nhớ (bằng cách đặt “preload_app” thành true).
  9. Có khả năng nghe trên nhiều giao diện bao gồm ổ cắm UNIX, mỗi quy trình công nhân cũng có thể liên kết với cổng riêng thông qua móc nối sau để gỡ lỗi dễ dàng.
  10. đơn giản và dễ dàng của Ruby DSL cho cấu hình

    1. giải mã chunked chuyển on-the-fly, do đó cho phép tiến trình tải lên thông báo được thực hiện cũng như việc có thể để đường hầm các giao thức dựa trên luồng tùy ý qua HTTP.

Đối với Puma (phiên bản mới hơn của cái gọi là thú lai server)

Puma là một đơn giản, nhanh chóng, và đánh giá cao đồng thời HTTP 1.1 máy chủ cho các ứng dụng web Ruby. Nó có thể được sử dụng với bất kỳ ứng dụng nào hỗ trợ Rack, và được coi là sự thay thế cho Webrick và Mongrel. Nó được thiết kế để trở thành máy chủ go-to cho Rubinius, nhưng cũng hoạt động tốt với JRuby và MRI. Puma được thiết kế để sử dụng trong cả môi trường phát triển và sản xuất.

Puma được yêu thích về tốc độ và tính tương đương

Nếu bạn muốn xem so sánh tốc độ thì tốt nhất là puma.

để biết thêm bạn có thể thấy http://puma.io/

Cảm ơn

+0

Nếu sử dụng Heroku, điểm # 2 không chính xác đúng, như được mô tả trong phần "khách hàng chậm" của bài viết này: https://devcenter.heroku.com/articles/rails-unicorn, "Nếu tất cả công nhân Unicorn bị trói buộc, các yêu cầu mới sẽ được xếp hàng đợi và ứng dụng của bạn có thể sẽ gặp phải các yêu cầu hàng đợi nhiều hơn bình thường hoặc thậm chí là lỗi H12" – ryan0

Các vấn đề liên quan