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服务启不起来。

RabbitMQ内存爆出问题解决思路的更多相关文章

  1. RabbitMQ内存爆出

    RabbitMQ升级到3.6.1版本后,随着业务和系统功能的增加,出现RabbitMQ内存陡增直至服务宕掉的情况.内存增加时,在management管理控制台上可以见到如下警告: The manage ...

  2. tomcat内存溢出问题解决思路

    .修改启动时内存参数.并指定JVM时区 (在windows server 下时间少了8个小时) 在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数: ...

  3. RabbitMQ 内存控制 硬盘控制

    RabbitMQ服务器在启动时以及abbitmqctl set_vm_memory_high_watermark fraction 执行时,会检查计算机的RAM总大小. 默认情况下下, 当 Rabbi ...

  4. 一个页面中多个window.onload = function(){}冲突问题解决思路

    转: 一个页面中多个window.onload = function(){}冲突问题解决思路 一个页面中多个window.onload = function(){}冲突问题解决思路 参考文章: (1) ...

  5. React 函数组件中对window添加事件监听resize导致回调不能获得Hooks最新状态的问题解决思路

    React 函数组件中对window添加事件监听resize导致回调不能获得Hooks最新状态的问题解决思路 这几天在忙着把自己做的项目中的类组件转化为功能相同的函数组件,首先先贴一份该组件类组件的关 ...

  6. 每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享

    本文来源于caoz梦呓公众号高并发专辑,以图形化.松耦合的方式,对互联网高并发问题做了详细解读与分析,"技术在短期内被高估,而在长期中又被低估",而不同的场景和人员成本又导致了巨头 ...

  7. 定位JVM内存溢出问题思路总结

    JVM的内存溢出问题,是个常见而有时候有非常难以定位的问题.定位内存溢出问题常见方法有很多,但是其实很多情况下可供你选择的有效手段非常有限.很多方法在一些实际场景下没有实用价值.这里总结下我的一些定位 ...

  8. Android几种Service常驻内存的小思路

    老话说的好:躲得了初一,躲只是高三 ! 大多数的Android开发人员遇到的一个问题-怎样保证Service常驻内存. 近期我最终也在项目中务必幸运的遇到了 先来了解一下什么是Service常驻内存. ...

  9. LOSF海量小文件问题解决思路及开源库

    "+++++++++++++++ LOSF 海量小文件存储和优化方案 +++++++++++++++++++++++++++++++++++++++++++++"一.问题产生原因以 ...

随机推荐

  1. Vue学习笔记之Nodejs中的NPM使用

    0x00 NPM是什么 简单的说,npm就是JavaScript的包管理工具.类似Java语法中的maven,gradle,python中的pip. 0x01 NPM安装 傻瓜式的安装. 第一步:打开 ...

  2. 前端学习笔记之css清除浮动float的七种常用方法总结和兼容性处理

    在清除浮动前我们要了解两个重要的定义: 浮动的定义:使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来. 高度塌陷:浮动元素父元素高度自适应(父元素不写高度时,子元素写了浮 ...

  3. 了解下Mysql的间隙锁及产生的原因

    什么是间隙锁当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁:对于键值在条件范围内但不存在的记录,叫做“间隙(GAP)”,InnoDB也 ...

  4. 【找不到符号】Maven打包找不到符号的问题排查

    当碰到maven错误:找不到符号问题时,通常第一反应应该是执行eclipse的Project -> Clean … -> Clean all projects,然后再执行maven cle ...

  5. ssh connection refused

    执行sudo apt-get install openssh-server命令安装SSH服务

  6. Postman模拟json传参

    首先在headers中,设置Content-Type为applicationon/json,如图: 然后再body中,选择raw,写入json数据结构,如图:

  7. 【Python】实现将testlink上的用例指定格式保存至Excel,用于修改上传

    背景 前一篇博客记录的可以上传用例到testlink指定用例集的脚本,内部分享给了之后,同事希望能将testlink上原有的用例下载下来,用于下次修改上传,所有有了本文脚本. 具体实现 获取用例信息 ...

  8. 关于UDP很好的书籍和文章(整理、持续更新)

    文章 告知你不为人知的 UDP:疑难杂症和使用(必看)

  9. Intellij Idea 将java项目打包成jar

    1.菜单:File->project stucture 2.在弹窗最左侧选中Artifacts->"+",选jar,选择from modules with depend ...

  10. Collections中的各种方法

    一.各种方法介绍 Counter 统计个数   elements  most_common  subtract defaultdict 字典默认值 ChainMap  合并多个映射对象(字典) Ord ...