我们在繁忙的生产集群中遇到了一个问题,那里的日志文件很快就被填满,并在几天之内消耗了整个磁盘(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个不同的队列之间有所不同,但我们看到相同的错误一遍又一遍地注销。
答案 0 :(得分:0)
我们在处理此事件时很晚才注意到,铲参数(amqp:///prod1
)中的虚拟主机名称实际上与我们几周前删除的旧虚拟主机相关。
似乎当我们删除此虚拟主机时,主机内仍然有队列。在内部,这似乎使RabbitMq处于不良状态,并且仍然存在与“排序”存在的队列相关的一些挥之不去的铲子配置,我不是Rabbit专家,所以假设删除vhost不会删除队列,即使您从未在UI上看到它们,它也会使自己感到困惑。
这里的解决方案是重新创建具有相同名称的虚拟主机,然后我们可以查看并删除所有队列,然后重新删除虚拟主机。这样就停止了错误,日志文件也不再呈指数增长。