rabbitmq 3.6.2 内存持续增长问题
rabbitmq-server作为openstack的消息中间件,被广泛使用,目前公司现网上使用3.3.5版本,使用稳定,无任何问题。
但是最近升级到3.6.2后,遇到不少问题:
-
内存使用量过大
如图所示,拥有management statistics database的结点,内存占用率异常高,逼近总内存×0.4的极限,再看下该结点占用内存的分布:
可以看出,mgmt_db占用的内存非常大,达到55GB -
所需的知识
1)mgmt_db是用来干什么的?
用来存储每个queue,exchange,connection,channel的监控数据,管理数据等,而且mgmt_db是存储在内存中,从rabbitmq 3.6.2后,存储在ETS tables中。 -
处理问题
1)能否通过命令将mgmt_db中的内容释放:
3.6.2以前的版本:
rabbitmqctl eval 'exit(erlang:whereis(rabbit_mgmt_db), please_terminate).'
3.6.2,3.6.2以后的版本:
rabbitmqctl eval 'supervisor2:terminate_child(rabbit_mgmt_sup_sup, rabbit_mgmt_sup),
rabbit_mgmt_sup_sup:start_child().'
2)能否尽量减小监控的指标:
在rabbitmq的配置文件中,配置:
{rabbitmq_management, [
{http_log_dir, "/tmp/rabbit-mgmt"},
{rates_mode, none}
]}
rates_mode表示监控各项资源的速率,none为不监控,默认为basic,还可以设置detail
3)减小采集数据的频率:
collect_statistics_interval置为10000,单位是ms
4)可能是一个bug:
https://github.com/rabbitmq/rabbitmq-management/issues/166
https://github.com/rabbitmq/rabbitmq-management/issues/173
https://github.com/rabbitmq/rabbitmq-server/issues/740
因此,升级到最新的3.6.5也许就能好使
5)需要从业务上考虑,为什么该环境的rabbitmq监控数据特别大,与同规模环境相比,所有指标,queue等的数量基本一致,就是内存特别大,这个需要考虑
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)