最近工作中存儲服務器由於壓力太大無法及時消費消息、這個過程中,導致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、多線程優化了存儲服務器,減少數據庫頻繁查詢開銷,提升存儲服務器消費能力。