Tôi đang cố gắng chạy RabbitMQ trên một VPS nhỏ (RAM 512MB) cùng với Nginx và một vài chương trình khác. Tôi đã có thể tinh chỉnh việc sử dụng bộ nhớ của tất cả mọi thứ khác mà không gặp khó khăn, nhưng tôi dường như không thể có được RabbitMQ để sử dụng bất kỳ RAM ít hơn.Giảm mức sử dụng bộ nhớ RabbitMQ
Tôi nghĩ rằng tôi cần phải giảm số lượng chủ đề Erlang sử dụng cho RabbitMQ, nhưng tôi đã không thể làm cho nó hoạt động. Tôi cũng đã thử đặt vm_memory_high_watermark
thành một vài giá trị khác nhau bên dưới giá trị mặc định (40%), thậm chí thấp đến 5%.
Một phần của vấn đề có thể là nhà cung cấp VPS (MediaTemple) cho phép tôi đi qua bộ nhớ được cấp phát, vì vậy khi sử dụng miễn phí hoặc trên cùng, nó cho thấy máy chủ có khoảng 900mb.
Bất kỳ đề xuất nào để giảm mức sử dụng bộ nhớ của RabbitMQ hoặc giới hạn số lượng chuỗi mà Erlang sẽ tạo? Tôi tin rằng Erlang đang sử dụng 30 chủ đề, dựa trên cờ -A30 mà tôi đã nhìn thấy trên lệnh quá trình.
Lý tưởng nhất là tôi muốn sử dụng tính năng ghi nhớ RabbitMQ dưới 100mb.
Edit:
Với vm_memory_high_watermark
bộ đến 5% (hoặc 0,05 trong file config), các bản ghi RabbitMQ báo cáo rằng giới hạn bộ nhớ RabbitMQ được thiết lập để 51mb. Tôi không chắc 51mb đến từ đâu. Hiện tại VPS phân bổ bộ nhớ là 924mb, vì vậy 5% trong số đó nên được khoảng 46mb.
Theo htop/miễn phí trước khi khởi động RabbitMQ, tôi đang ngồi khoảng 453mb RAM đã qua sử dụng, và sau khi bắt đầu, RabbitMQ tôi có khoảng 650mb. Tăng gần 200mb. Nó có thể là 200mb là giới hạn thấp hơn mà RabbitMQ sẽ chạy với?
Chỉnh sửa 2
Here are some screenshots của ps aux và miễn phí trước và sau khi bắt đầu RabbitMQ và một biểu đồ hiển thị các cành nhớ khi RabbitMQ được bắt đầu.
Sửa 3
Tôi cũng đã kiểm tra không có plug-in được kích hoạt, và nó làm cho rất ít sự khác biệt. Có vẻ như các plugin tôi đã có (quản lý và điều kiện tiên quyết của nó) chỉ được thêm vào khoảng 8mb sử dụng ram.
Sửa 4
tôi không còn có máy chủ này để thử nghiệm với, tuy nhiên, có một conf thiết delegate_count
được thiết lập để mặc định của 16. Theo như tôi biết, điều này sinh ra 16 sup- procs cho thỏmq. Giảm số này trên các máy chủ nhỏ hơn có thể giúp giảm bớt dấu chân bộ nhớ. Không có ý tưởng nếu điều này thực sự hoạt động, hoặc làm thế nào nó tác động đến hiệu suất, nhưng nó là một cái gì đó để thử.
Khi tôi sử dụng 'vm_memory_high_watermark', báo cáo giới hạn ram chính xác trong nhật ký (dựa trên 900mb thực tế của VPS, không phải 512MB tôi đã mua). Khi thiết lập đến 5% các bản ghi cho thấy 45MB, nhưng mỗi quá trình erlang sinh ra được sử dụng giữa 20 và 25mb ram, mà nhanh chóng đưa tôi qua phân bổ 512MB của tôi. –
Khi bạn nói 'mỗi quá trình erlang' bạn có nghĩa là, quá trình erlang OS hoặc quá trình nội bộ erlang? –
Khi tôi chạy htop, tôi thấy 30 hoặc hơn '/usr/lib/erlang/erts-5.7.4/bin/beam.smp -W w -K true -A30-P 1048576' và sau đó một số cờ liên quan đến RabbitMQ và mnesia. –