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