我正在尝试在小型VPS(512mb RAM)以及Nginx上运行RabbitMQ。 其他几个程序。 我已经能够毫不费力地调整其他所有对象的内存使用情况,但是我似乎无法让RabbitMQ使用更少的RAM。
我认为我需要减少Erlang用于RabbitMQ的线程数,但是我无法使其正常工作。 我还尝试将 vm_memory_high_watermark
设置为低于默认值(40%)的几个不同值,甚至低至5%。
部分问题可能是VPS提供程序(MediaTemple )允许我检查分配的内存,因此当使用免费或顶级时,它表明服务器大约有900mb。
是否有任何建议通过RabbitMQ来减少内存使用,或限制Erlang将创建的线程数? 我相信Erlang正在使用30个线程,基于我在process命令中看到的-A30标志。
理想情况下,我希望RabbitMQ内存使用率低于100mb。
编辑:
使用 vm_memory_high_watermark
设置为5%(在配置文件中为0.05),RabbitMQ日志报告RabbitMQ的内存限制设置为51mb。 我不确定51mb的来源。 当前VPS分配的内存为924mb,所以其中的5%应该在46mb左右。
根据htop / free的信息,在启动RabbitMQ之前,我坐着453mb的旧ram,在启动RabbitMQ之后,我约为650mb。 增加近200mb。 [RabbitMQ]运行的下限可能是200mb吗?
编辑2
以下是在启动RabbitMQ之前和之后ps aux的一些屏幕截图和免费的屏幕快照,以及显示RabbitMQ为 开始。
编辑3
我也检查了是否未启用任何插件,它的作用很小。 看来我拥有的插件(管理及其先决条件)仅增加了约8mb的ram使用情况。
编辑4
我不再具有要测试的服务器,但是,有一个conf设置 delegate_count [
,默认设置为16。据我所知,这会为Rabbitmq生成16个sup-proc。 在较小的服务器上降低此数目可能有助于减少内存占用。 不知道这是否真的有效,或者它如何影响性能,但这是可以尝试的方法。
Подходящим способом ограничения использования памяти в RabbitMQ является использование vm_memory_high_watermark
. Вы сказали:
Я также пытался установить для vm_memory_high_watermark несколько других значений ниже значения по умолчанию (40%), даже до 5%.
Этот должен работать, но он может вести себя не так, как вы ожидаете. В журналах вы найдете строку, которая сообщает вам, каков абсолютный предел памяти, что-то вроде этого:
=INFO REPORT==== 29-Oct-2009::15:43:27 ===
Memory limit set to 2048MB.
Вам необходимо настроить ограничение памяти по мере необходимости - Кролик может видеть вашу систему как иметь гораздо больше оперативной памяти, чем вы думаете, если вы работаете в среде VPS.
Иногда Rabbit не может определить, в какой системе вы находитесь, и использует 1 ГБ в качестве базовой точки (поэтому вы получаете ограничение в 410 МБ по умолчанию).
Также убедитесь, что вы работаете в версии RabbitMQ, которая поддерживает настройку vm_memory_high_watermark
- в идеале вы должны работать с последней стабильной версией.