zoukankan      html  css  js  c++  java
  • rabbitmq 3.6.2 内存持续增长问题

    rabbitmq-server作为openstack的消息中间件,被广泛使用,目前公司现网上使用3.3.5版本,使用稳定,无任何问题。
    但是最近升级到3.6.2后,遇到不少问题:

    1. 内存使用量过大

      如图所示,拥有management statistics database的结点,内存占用率异常高,逼近总内存×0.4的极限,再看下该结点占用内存的分布:

      可以看出,mgmt_db占用的内存非常大,达到55GB

    2. 所需的知识
      1)mgmt_db是用来干什么的?
      用来存储每个queue,exchange,connection,channel的监控数据,管理数据等,而且mgmt_db是存储在内存中,从rabbitmq 3.6.2后,存储在ETS tables中。

    3. 处理问题
      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等的数量基本一致,就是内存特别大,这个需要考虑

  • 相关阅读:
    scrapy--Cookies
    python--signal
    python--redis
    TCP/IP 协议
    python--Wrapper
    python--inspect
    python--pexpect
    linux 特殊命令(一)
    day45 Pyhton 数据库Mysql 02
    day44 Pyhton 数据库Mysql
  • 原文地址:https://www.cnblogs.com/oolo/p/6023803.html
Copyright © 2011-2022 走看看