• 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、多线程优化了存储服务器,减少数据库频繁查询开销,提升存储服务器消费能力。

  • 相关阅读:
    mysql工具导出数据库表数据
    c#接收http的post请求的多个文件流
    java上传文件和参数到服务器
    windows server 2008 w3svc服务无法启动
    java调用c#webapi的接口实现文件上传
    postman上线文件上传,并用c#服务端接收
    sql语句修改数据库字段的长度
    VB2015运行项目时出现的错误
    JavaWeb实现分页功能
    会话跟踪技术
  • 原文地址:https://www.cnblogs.com/monkjavaer/p/9651424.html
Copyright © 2020-2023  润新知