Я пытаюсь запустить RabbitMQ на небольшой VPS (512 Мб RAM) вместе с Nginx и несколькими другими программами. Я смог без труда настроить использование памяти всего остального, но я не могу заставить RabbitMQ использовать меньшее количество ОЗУ.
Я думаю, мне нужно уменьшить количество потоков, используемых Erlang для RabbitMQ, но я не смог заставить его работать. Я также попытался установить vm_memory_high_watermark
на несколько разных значений ниже значения по умолчанию (40%), даже до 5%.
Частью проблемы может быть то, что поставщик VPS (MediaTemple) позволяет мне переходить через выделенную память, поэтому при использовании бесплатного или верхнего уровня это показывает, что сервер имеет около 900 МБ.
Любые предложения по сокращению использования памяти с помощью RabbitMQ или ограничение количества потоков, которые создаст Erlang? Я считаю, что Erlang использует 30 потоков на основе флага -A30, который я видел в команде процесса.
В идеале я бы хотел использовать RabbitMQ mem ниже 100 МБ.
Edit:
С vm_memory_high_watermark
установлено значение 5% (или 0,05 в конфигурационном файле), журналы RabbitMQ сообщают, что ограничение памяти RabbitMQ установлено равным 51 МБ. Я не знаю, откуда взялось 51mb. Текущая выделенная память VPS составляет 924 МБ, поэтому 5% от нее должно быть около 46 МБ.
В соответствии с htop/free, прежде чем запускать RabbitMQ, я сижу около 453 мб используемого бара, а после запуска RabbitMQ я около 650 МБ. Почти 200 мб. Может ли быть, что 200mb - это нижний предел, который RabbitMQ будет работать с?
Изменить 2
Вот несколько скриншотов ps aux и бесплатно до и после запуска RabbitMQ и графика, показывающего всплеск памяти при запуске RabbitMQ.
Изменить 3
Я также проверил без включения плагинов, и это сделало очень мало различий. Кажется, что плагины, которые у меня были (управление и его предпосылки), добавили только около 8 мб использования ram.
Изменить 4
У меня больше нет этого сервера для тестирования, однако есть настройка conf delegate_count
, для которой установлено значение по умолчанию 16. Насколько я знаю, это порождает 16 sup-procs для rabbitmq. Уменьшение этого числа на небольших серверах может помочь уменьшить объем памяти. Не знаю, работает ли это на самом деле или как это влияет на производительность, но это что-то попробовать.