RabbitMQ記憶體爆出

2021-09-08 04:42:03 字數 1621 閱讀 4716

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)

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服務啟不起來。

其他rabbitmq執行時修改引數:

1. 修改rates_mode

rabbitMQ服務記憶體占用大問題

業務發現rabbitmq的伺服器出現記憶體出現無限增加,由sre和業務同事提出 想增加下qos配置,prefetchcount來限制消費端無限制的接受訊息 導致消費服務應用記憶體一直增加 jvm現象 頻繁gc,dump堆資料看發現4g的記憶體,有3g都是這樣的物件 rabbitmq資料指標 unac...

rabbitMq記憶體與磁碟分配問題

在伺服器上也可以改變配置檔案修改記憶體 也可以使用命令進行分配 相對記憶體 rabbitmqctl set vm memory hgih waterwmark 0.4 使用時可以把這個0.4替換成自己想要的百分比 絕對記憶體 rabbitmqctl set vm memory hgih waterw...

rabbitmq集群跨機器訪問引起記憶體占用高的問題

rabbitmq的佇列並不是分布在集群中,而且每個節點維護自己的 假設a b組成乙個集群,rabbit網域名稱或elb指向a,那麼client會連線到a。但如果目標queue在b上,rabbit就會有乙個內部的 機 的機制來維護,相當於 一樣。通過該機制,client仍能正常操作queue 但有乙個...