kavin

openstack云平台各种操作反应变慢----清理僵尸队列

kavin 虚拟化 2018-05-10 4402浏览 0

 

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'


继续浏览有关 lognameopenstack云平台 的文章
发表评论