二次openstack排错

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 3 true 0 [] cinder-scheduler_fanout_ee07d2cb126c4378b59bf11007aa879b 3 true 0 [] 此时发现cinder-scheduler_fanout_5720c0511f654740bb639de7282a3ed1 这个队列没有consume,确认此queue为僵尸队列。 一个组件突然断掉,当期再次加入集群中时 ,不是复用原先的队列,而是创建新的队列。而原来的队列依然绑定在exchange上,这样,从exchange 路由过来的消息依然会发送到老队列上,老队列上没有“consumer”与之对应,导致消息队列的堆积。 4.故障解决  删除该僵尸队列 rabbitmqadmin delete queue name='xxxx'

0 个评论

要回复文章请先登录注册