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、多线程优化了存储服务器,减少数据库频繁查询开销,提升存储服务器消费能力。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 《HelloGitHub》第 108 期
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单