2009-05-13 29 views
6

Trang web đường ray của tôi chạy Mongrel, tôi gặp sự cố với lượng bộ nhớ đang được sử dụng. Quá trình ruby-bin của tôi đang sử dụng khoảng 66 MB bộ nhớ thường trú. Làm thế nào tôi có thể giảm số lượng bộ nhớ được sử dụng bởi đường ray?Giảm Footrel Rails Memory Footprint & Tăng hiệu suất?

Nó không phải là rất kinh tế để có nhiều máy chủ đường ray chạy trên một máy tính duy nhất nếu họ đang ăn bộ nhớ ở mức này. Các quá trình php5 fcgi của tôi nằm trong khoảng 15-25 MB.

Tôi khá xa lạ với RoR, có sử dụng trợ giúp JRuby không? Bất kỳ ý kiến ​​hữu ích trong việc giảm dấu chân bộ nhớ và tăng hiệu suất được chào đón nhiều hơn.

Trả lời

7

Bạn có thể xem Phusion PassengerRuby Enterprise Edition, đây là thiết lập tiêu chuẩn thực tế cho ứng dụng Rails những ngày này. Một trong những mục tiêu của nó là cắt giảm sử dụng bộ nhớ. Nó cũng đơn giản hơn là có một nhóm Mongrels.

+0

+1 I thứ hai đề xuất Hành khách. –

+0

+1 Tôi thứ hai khuyến nghị REE, vì nó bao gồm các bản vá MBARI làm cho nó tiêu tốn ít bộ nhớ hơn. Điều đó hoặc 1,9 cũng sử dụng ít hơn. Ngoài ra hãy chắc chắn rằng bạn đang chạy một hệ điều hành 32 bit, nếu có thể. – rogerdpack

3

Nếu bạn không bị ràng buộc với apache cho cái gì khác, tôi cũng sẽ thử nginx với Phusion Passenger. Nếu bạn lo lắng về việc sử dụng bộ nhớ, bạn sẽ thấy một dấu chân nhỏ hơn từ nginx hơn apache, và phiên bản mới nhất của Hành khách sẽ tải xuống, biên dịch và cài đặt nginx cho bạn với những cơn đau đầu tối thiểu.

1

Tôi sẽ không đi xa như vậy để nói Hành khách là tiêu chuẩn thực tế, nhưng nó đạt được rất nhiều lực kéo. Chúng tôi vừa chuyển sang Nginx + Passenger, và dấu chân bộ nhớ ruby ​​của chúng tôi (tức là Mongrels vs. Passenger) giảm từ khoảng 450MB xuống còn 295MB. Nó có thể giảm ít hơn, vì Hành khách sẽ giết procs nếu họ nhàn rỗi (điều này có thể cấu hình được), nhưng tất nhiên nếu bạn đang nhận được lưu lượng truy cập và nó sử dụng tất cả các trường hợp bạn đã cấu hình, thì họ sẽ sử dụng bộ nhớ tương ứng .

Lưu ý rằng chúng tôi không sử dụng Ruby Enterprise Edition trong cấu hình của chúng tôi (chủ yếu là vì nó chưa có sẵn tại Engine Yard), nhưng chúng tôi vẫn đang nhìn thấy một dấu chân bộ nhớ nhỏ hơn. Bộ nhớ là lý do hàng đầu đầu tiên chúng tôi thực hiện chuyển đổi, nhưng có những lợi ích khác, chẳng hạn như cấu hình nhanh hơn và dễ dàng hơn để mở rộng quy mô lên hoặc xuống, v.v.

3

Bạn cũng có thể thay thế quy trình mongrel của mình bằng Thin hiệu quả hơn và gần đây đã được vá trong Bộ sưu tập rác (thông qua eventmachine) để làm cho nó tốt hơn nữa.

Chúng tôi sử dụng cụm mỏng phía sau giao diện nginx với kết quả tốt.

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