rabbitmq - RabbitMq 日志填充 {{badmatch,{error,access_refused}},占用磁盘空间
问题描述
我们在繁忙的生产集群中面临一个问题,其中日志文件迅速填满,并在几天内消耗了整个磁盘 (40Gb)。
我们看到的错误是:
=ERROR REPORT==== 19-Jul-2019::12:01:41 ===
** Generic server <0.13892.127> terminating
** Last message in was {'$gen_cast',init}
** When Server state == {state,undefined,undefined,undefined,undefined,
{<<"prod1">>,
<<"Move from My_Queue_Name">>},
dynamic,
{shovel,
{endpoint,
["amqp:///prod1"],
#Fun<rabbit_shovel_parameters.4.75090704>},
{endpoint,
["amqp:///prod1"],
#Fun<rabbit_shovel_parameters.5.120532295>},
1000,on_confirm,
#Fun<rabbit_shovel_parameters.6.48689962>,
#Fun<rabbit_shovel_parameters.7.130815760>,
<<"My_Queue_Name">>,
1,'queue-length'},
undefined,undefined,undefined,undefined,undefined}
** Reason for termination ==
** {{badmatch,{error,access_refused}},
[{rabbit_shovel_worker,make_conn_and_chan,1,[]},
{rabbit_shovel_worker,handle_cast,2,[]},
{gen_server2,handle_msg,2,[]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]}
虽然队列名称在大约 10 个不同的队列之间确实有所不同,但我们看到同样的错误一次又一次地注销。
解决方案
我们在处理该事件时很晚才注意到,铲子参数 ( amqp:///prod1
) 中的虚拟主机名称实际上与我们几周前删除的旧虚拟主机有关。
似乎当我们删除这个虚拟主机时,主机内仍然有队列。在内部,这似乎使 RabbitMq 处于不良状态,并且仍然存在一些与“某种”存在的队列相关的挥之不去的铲子配置,我不是 Rabbit 专家,所以假设删除 vhost 不会删除即使您从未在 UI 上看到它们并且它自己也会感到困惑。
这里的解决方案是重新创建同名的虚拟主机,然后我们可以看到并删除所有队列,然后重新删除虚拟主机。这停止了错误,并且日志文件不再呈指数增长。
推荐阅读
- android - 嵌套的 RecyclerViews,内部回收器不显示
- java - Eclipse 对导入感到困惑(“可从多个模块访问”)
- docker - 在 docker-compose 文件中使用 Weave 网络
- c++ - C++ 命名管道,安全地编写 unsigned int
- laravel-5 - 我想从网址栏“产品”访问。“.../product/paracetamol 1”,但我给出了“未定义的变量:产品 (0)”。
- ruby - 使用 ruby 在 linux 上使用 selenium webdriver 的问题
- vue.js - Microsoft Graph 在身份验证后记住用户
- r - 使用 lapply 从数据框列表创建新数据框
- javascript - 必须刷新才能预先选中复选框,具体取决于 mongoDb 值
- firebase - 颤振错误:输入“未来”
' 不是类型 'List 的子类型 '