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等的數量基本一致,就是內存特別大,這個需要考慮


免責聲明!

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



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