最近工作中服务器压力太大过程中,遇到MQ意外挂掉,无法访问。
服务器异常:
[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==
查看服务器转态: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
继续排查,通过:du -h -x --max-depth=1 一步步发现queue太大问题。
[root@localhost rabbit@localhost]# du -h -x --max-depth=1 0 ./msg_store_persistent 46G ./queues 12K ./msg_store_transient
原来是没有及时消费mq消息,消息队列越来越大,最终撑爆服务器。最后找到./queues下面的大文件删除即可(生产环境请备份处理)。
基于此问题,最终通过Redis、多线程优化了我们的服务,减少数据库频繁查询开销,提升了消费能力。