RabbitMQ消息队列阻塞导致服务器宕机

最近工作中存储服务器由于压力太大无法及时消费消息、这个过程中,导致RabbitMQ意外挂掉,无法访问。下面是部分问题分析过程。

麒麟系统服务器分析

1、服务器异常信息:

[root@localhost ~]# service rabbitmq-server status
Status of node rabbit@localhost ...
Error: unable to connect to node rabbit@localhost: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@localhost]

rabbit@localhost:
* connected to epmd (port 4369) on localhost
* epmd reports: node 'rabbit' not running at all
no other nodes on localhost
* suggestion: start the node

current node details:
- node name: 'rabbitmq-cli-90@localhost'
- home dir: /var/lib/rabbitmq
- cookie hash: HIkCAX9bQ+wszeJ6VEmyxw==

 2、查看服务器转态:df -h   根目录空间用完了。

[root@localhost /]# df -h
文件系统                容量  已用  可用 已用% 挂载点
/dev/mapper/kylin-root   50G   50G   20K  100% /
devtmpfs                1.9G     0  1.9G    0% /dev
tmpfs                   1.9G   84K  1.9G    1% /dev/shm
tmpfs                   1.9G   97M  1.8G    6% /run
tmpfs                   1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1              1014M  174M  841M   18% /boot
/dev/mapper/kylin-home   46G  2.4G   43G    6% /home
tmpfs                   380M   16K  380M    1% /run/user/42

 3.继续排查,通过:du -h -x --max-depth=1 一步步发现queue太大问题:系统总共50G、资源已被消耗完。

[root@localhost rabbit@localhost]# du -h -x --max-depth=1
0	./msg_store_persistent
46G	./queues
12K	./msg_store_transient

 由于没有及时消费rabbitmq消息,导致消息队列越来越大,最终撑爆服务器资源。最后找到./queues下面的大文件删除即可(生产环境请备份进行后续处理!!!)。

 基于此问题,最终通过Redis、多线程优化了存储服务器,减少数据库频繁查询开销,提升存储服务器消费能力。

posted @ 2018-09-15 16:58  monkjavaer  阅读(10430)  评论(0编辑  收藏  举报