RabbitMq日志填充{{badmatch,{error,access_refused}},占用磁盘空间

时间:2019-07-19 18:46:59

标签: rabbitmq

我们在繁忙的生产集群中遇到了一个问题,那里的日志文件很快就被填满,并在几天之内消耗了整个磁盘(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个不同的队列之间有所不同,但我们看到相同的错误一遍又一遍地注销。

1 个答案:

答案 0 :(得分:0)

我们在处理此事件时很晚才注意到,铲参数(amqp:///prod1)中的虚拟主机名称实际上与我们几周前删除的旧虚拟主机相关。

似乎当我们删除此虚拟主机时,主机内仍然有队列。在内部,这似乎使RabbitMq处于不良状态,并且仍然存在与“排序”存在的队列相关的一些挥之不去的铲子配置,我不是Rabbit专家,所以假设删除vhost不会删除队列,即使您从未在UI上看到它们,它也会使自己感到困惑。

这里的解决方案是重新创建具有相同名称的虚拟主机,然后我们可以查看并删除所有队列,然后重新删除虚拟主机。这样就停止了错误,日志文件也不再呈指数增长。