1.故障现象:
云平台各种操作,反应变慢。(好像和上次一样)
2.解决思路:
消息不断堆积,而无消费者消费消息,会消耗资源,从而触发rabbitmq的拥塞控制机制,降低生产者向rbbitmq发送消息的速率(好像还和上次一样)
3.查询故障
一个cinder-scheduler 进程对应一个cinder-scheduler_fanout_{uuid}队列。我们现有两个api
节点,含有两个cinder-scheduler进程,对应两个cinder-scheduler_fanout_{uuid}队列,如下所示,含有三个队列,说明有一个僵尸队列。(一
般是堆积消息的队列为僵尸队列)
$ rabbitmqctl list_queues |grep cinder-scheduler
cinder-scheduler 0
cinder-scheduler.cinder 0
cinder-scheduler_fanout_5720c0511f654740bb639de7282a3ed1 48
cinder-scheduler_fanout_89ec86c1f9ce404089d17e6825050555 0
cinder-scheduler_fanout_ee07d2cb126c4378b59bf11007aa879b 0
查询队列对应的consume
$ rabbitmqctl list_consumers |grep cinder-scheduler_fanout_
cinder-scheduler_fanout_89ec86c1f9ce404089d17e6825050555 <rabbit@server-52.1.7565.33> 3 true 0 []
cinder-scheduler_fanout_ee07d2cb126c4378b59bf11007aa879b <rabbit@server-53.3.12569.78> 3 true 0 []
此时发现cinder-scheduler_fanout_5720c0511f654740bb639de7282a3ed1 这个队列没有consume,确认此queue为僵尸队列。
一个组件突然断掉,当期再次加入集群中时 ,不是复用原先的队列,而是创建新的队列。而原来的队列依然绑定在exchange上,这样,从exchange
路由过来的消息依然会发送到老队列上,老队列上没有“consumer”与之对应,导致消息队列的堆积。
4.故障解决
删除该僵尸队列
rabbitmqadmin delete queue name='xxxx'
转载请注明:IT运维空间 » 虚拟化 » openstack云平台各种操作反应变慢----清理僵尸队列
发表评论