RabbitMQ內存爆出問題解決思路


http://www.bubuko.com/infodetail-2121050.html

 

RabbitMQ升級到3.6.1版本后,隨着業務和系統功能的增加,出現RabbitMQ內存陡增直至服務宕掉的情況。內存增加時,在management管理控制台上可以見到如下警告:

The management statistics database currently has a queue of xx events to process. If this number keeps increasing, so will the memory used by the management plugin. You may find it useful to set the rates_mode config item to none.

 

應對策略:

1. 根據提示,將rabbitMQ.config中的rates_mode配置項設置為none。

弊端:這樣就沒法在management控制台上看到message rate的數據了。不能跟進一個隊列實時publish和ack的任務量

 

2. 重啟統計數據庫(釋放內存)

3.6.2以前的版本:rabbitmqctl eval ‘exit(erlang:whereis(rabbit_mgmt_db), please_terminate).‘

3.6.2以后的版本:rabbitmqctl eval ‘rabbit_mgmt_storage:reset().‘

  rabbitmqctl eval ‘rabbit_mgmt_storage:reset_all().‘可以重啟所有node的統計數據庫

  另外:3.6.10版本的management控制台已經可見reset按鈕

 

3. 修改rabbitMQ的統計頻率(改為15s,默認5s)

broker運行過程中修改:rabbitmqctl eval ‘application:set_env(rabbit, collect_statistics_interval, 15000).‘ 

config文件修改:將rabbitMQ.config中的collect_statistics_interval配置項設置為15000。

NOTE:如果沒有做config文件的修改,broker運行中的修改將在rabbitmq-server服務重啟后失效。

 

4. 限制stats collector processes的使用內存(改為100,默認250)

config文件修改:將rabbitMQ.config中的stats_event_max_backlog配置項設置為100。

可能需要手動在rabbitMQ_Management節點中添加stats_event_max_backlog的設置項 (此處不確定,官方提示修改此值,但config並未見到此配置

 

5. 提高rabbitmq的內存低水位線(默認0.4)

broker運行過程中修改:rabbitmqctl set_vm_memory_high_watermark 0.6

config文件修改:將rabbitMQ.config中的vm_memory_high_watermark配置項設置為0.6

NOTE:如果沒有做config文件的修改,broker運行中的修改將在rabbitmq-server服務重啟后失效。

 

NOTE:修改config文件時,要留意配置項后面的逗號[,],最后一個配置項不能有逗號,多個配置項之間用逗號隔開。此處處理不好會造成rabbitmq服務啟不起來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM