2011-02-11 39 views
6

Tôi đang chạy phiên bản Redmine với Hành khách và Nginx. Chỉ với một số ít các vấn đề trong cơ sở dữ liệu, Redmine tiêu thụ hơn 80MB RAM.Giảm mức sử dụng bộ nhớ của Redmine - Trái cây treo thấp

Bất kỳ ai cũng có thể chia sẻ các mẹo để giảm mức sử dụng bộ nhớ của Redmine. Ví dụ Redmine được sử dụng bởi 3 người và tôi sẵn sàng hy sinh tốc độ.

+0

Không phải là giải pháp, nhưng, nếu bạn không sử dụng REE (và sử dụng ruby ​​1.8.7) hãy thử nó, cho các ứng dụng của tôi nó giảm giá bộ nhớ 30%. – andrea

Trả lời

3

Không có trái cây treo thực sự và thấp. Và nếu có, chúng tôi đã bao gồm và kích hoạt chúng theo mặc định.

80 MB RSS (trái với kích thước ảo có thể nhiều hơn) thực sự khá tốt. Trong hoạt động bình thường, nó sẽ sử dụng từ 70 đến 120 MB RSS cho mỗi quá trình (tùy thuộc vào mô hình triển khai, thay vì ít trên hành khách).

Như andrea gợi ý, bạn có thể giảm tổng dung lượng bộ nhớ của bạn khoảng một phần ba khi bạn sử dụng REE (Ruby Enterprise Edition, cũng miễn phí). Nhưng điều này tiết kiệm chỉ có thể đạt được khi bạn chạy nhiều hơn một quá trình (mỗi yêu cầu bộ nhớ trên). REE đạt được tiết kiệm này bằng cách tối ưu hóa Ruby cho một kỹ thuật được gọi là Copy on Write, để các quá trình ứng dụng bổ sung mất ít bộ nhớ hơn.

Vì vậy, tôi rất tiếc, máy chủ vServer 128 MB (giả định) của bạn có thể sẽ không đủ. Đối với một cài đặt nhỏ, bạn có thể có thể squeeze một cài đặt tối thiểu vào 256MB, nhưng nó chỉ bắt đầu được bất cứ điều gì, nhưng một nỗi đau hoàn toàn trong ass tại 512 MB (bao gồm cả cơ sở dữ liệu).

Đó là vì cách ứng dụng Rails hoạt động trái ngược với những thứ như PHP. Chúng yêu cầu một cá thể máy chủ ứng dụng đang chạy. Ví dụ đó thường có thể trả lời một yêu cầu tại một thời điểm, sử dụng cùng một lượng bộ nhớ mọi lúc. Vì vậy, mức tiêu thụ bộ nhớ của bạn tương đương với số lượng quy trình ứng dụng bạn chạy, độc lập với tải thực tế. Nhưng nếu bạn điều chỉnh hệ thống của bạn đúng cách, bạn có thể nhận được khá nhiều reqs/s trong một quá trình.

+0

Được rồi, tôi hiểu điều đó. Tôi đã sử dụng REE. Cho đến nay, 160 MB (trên một kế hoạch WebFaction) đã đủ tốt cho cả Redmine và dự án Django nhỏ mà chúng tôi đang sử dụng Redmine cho. Điều đó có thể sẽ thay đổi khi ứng dụng Django hoạt động. –

+0

Đối với các ứng dụng Django, bạn có thể tiết kiệm một số chi phí bằng cách bỏ qua Django và phục vụ các tệp phương tiện tĩnh trực tiếp từ Apache hoặc Nginx. Bạn có lời khuyên nào giống như vậy cho Ruby không? –

+0

@aantn: Vì bạn đã sử dụng nginx + hành khách, đó chính xác là những gì đang xảy ra. Các tệp tĩnh được phục vụ trực tiếp bởi nginx và các yêu cầu động được chuyển tiếp đến hành khách để được trả lời bằng đường ray. –

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