RabbitMQ TroubleShooting
RabbitMQ是一款优秀的消息队列中间件,提供了稳定、监控完善的产品,但是软件就会有bug。为了前进路径可以畅通,我们必须了解出现的一些故障的快速处理方式,毕竟在生产环境,时间就是生命,尽快的处理是避免产生事故的最有效方式。
了解常见的一些故障,我们可以有针对的处理预案,快速、高效的处理故障,更好的运维是我们一直的追求。
查看故障信息,RabbitMQ出现故障,要通过一些有效途径快速的获取故障原因,而不能是每次都通过重启RabbitMQ服务的方式来解决。
如何查看故障信息,从几个方面
通过rabbitmqctl status ,在出现故障 服务器,查看当前MQ运行状态,该命令可以看到一些非常有用的信息
通过rabbitmqctl cluster_status ,查看集群状态是否正常。在RabbitMQ集群由于网络原因而可能出现网络割裂的情况下,可以通过该命令查看集群运行状态
查看rabbitmq 运行日志文件。可能有的小伙伴不知道该文件在哪里,在RABBITMQ_LOG_BASE定义的位置,还有小伙伴可能又要问RABBITMQ_LOG_BASE是什么,我只能说这个是rabbitmq的环境变量值,在rabbitMQ安装路径/sbin 目录下,注意看有一个rabbitmq-env.bat 文件。请通过记事本打开该文件,然后搜索RABBITMQ_LOG_BASE,可以看到具体路径。更多的就不详细聊了,在RABBITMQ配置文件我会专门说明
故障信息一览
- 通过localhost:15672 无法打开监控页面。
原因:1、RabbitMQ服务未开启 2、未开启监控插件。
解决方案:
1、通过rabbitmq-service start 开启RabbitMQ服务
2、通过rabbitmq-plugins enable rabbitmq_management 开启监控插件。
通过以上两种方式的操作,监控页面一般都可以正常打开了。 - localhost:15672 的登录密码不知道?
原因:不懂rabbitmq或rabbitmq的超级小白,或者在安装时将guest用户删除(概率极小),我当时第一次学习也是这样,打开了监控面板,一脸懵逼,因为我压根不知道登录 密码。
解决方案:
1、如果未使用RabbitMQ配置文件或未更改rabbitmq的配置文件,就是说采用的是默认配置。那么我们就必须知道RabbitMQ安装以后会默认存在一个用户,账号与密码均 是guest。
2、使用默认账号密码均是guest的用户,仍旧无法登录。那么为我们就要开始第二步了,通过rabbitmqctl list_users 查看是否有guest用户。正常情况下,应该显示
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.8\sbin>rabbitmqctl list_users
Listing users ...
guest [administrator]如果未看到一个用户,那么我们可以创建一个用户guozhiqi(名称随意)来执行登录。
具体操作:
1、执行rabbitmqctl add_user guozhiqi guozhiqi (rabbitmqctl add_user 用户名 密码)。执行完该命令后仍旧无法通过guozhiqi/guozhiqi登录的,因为这个用户是没有管理权限的。
2、执行授权操作 rabbitmqctl set_user_tags guozhiqi administrator (rabbitmqctl set_user_tags 用户名 角色(administrator,monitoring, management))
3、此时通过用户guozhiqi 就可以登录了
4、登录进去你会发现,只能查看,不能进行任何修改或新增操作,原因是没有权限。此时,针对运维人员就需要给用户guozhqi授权,执行rabbitmqctl set_permissions -p / username ".*" ".*" ".*" //添加权限 该问题解决
3、更改guest权限。通过rabbitmqctl change_password guest guest。也可以通过guest/guest用户登录啦。。。。 - 执行rabbitmqctl list_users ,出现Error: this command requires the 'rabbit' app to be running on the target node. Start it with 'rabbitmqctl start_app'.
解决方案:这个错误很明显的指出了app未运行。很多人会弄混一个事情,就是一个rabbitmq service可以有多个app存在,也就是说可以搭建单机集群。
rabbitmq-service start/rabbitmq-service stop 是针对rabbitmq服务的操作。
什么情况下才会执行这个操作呢? 目前我已知的有两种,一种是rabbitmq配置文件更改需要重新启动(还需要重新安装奥),另一种就是服务停止 需要开启
rabbitmqctl stop_app/rabbitmqctl start_app 什么情况下会执行呢?首先我们要知道这两个命令的作用是什么。关闭或开启当前app,注意是当前。有兴趣的哈,可以搜索单机集群搭建。 - windows服务开启失败。RabbitMQ: Erlang machine stopped instantly (distribution name conflict?)
解决方案:如果重命名服务器名称或使用其他账户登录系统,可能会出现该问题。使用安装rabbitmq的账户进行登录。
查看rabbitmq目录是否包含中文或特殊字符,如果有的话,请更改安装目录。 - 执行命令 rabbitmqctl status 提示:unable to perform an operation on node 'rabbit@localhost'?
解决方案:首先分析出现这个异常信息,无法中心操作,也就是说RabbitMQ服务没有启动造成的。
windows 通过启动RabbitMQ服务,centos通过rabbitmq-server 来开启rabbitmq - centos 执行命令rabbitmqctl start_app 提示: bash: rabbitmqctl: command not found...
解决方案:首先可以明确知道的是,rabbitmqctl这个命令找不到。分析centos 中执行操作可能出现命令找不到的情况。
1、/etc/profile 未定义或未生效
2、用户不同。
其中针对第一个针对性的说明一下,rabbitmq部署完后,会在/etc/profile中增加几行(目录可能不同)
export PATH=$PATH:/etc/rabbitmq/erlang/bin
export PATH=$PATH:/etc/rabbitmq/rabbitmq_server/sbin
这几行的目的就是设置环境变量。不像windows设置了环境变量就会生效,centos 需要执行source /etc/profile 才会生效。因此如果出现command not found的提示,且配置了环境变量,那么请务必执行source /etc/profile 使之生效。
rabbitmq故障一览,持续记录出现的RabbitMQ故障及解决方式。
RabbitMQ TroubleShooting的更多相关文章
- windows安装rabbitmq
官网下载windows安装版本:http://www.rabbitmq.com/install-windows.html ,安装文件rabbitmq-server-3.6.5.exe 前提:安装erl ...
- RabbitMQ安装和配置
RabbitMQ: MQ:message queue.MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来 ...
- Troubleshooting OpenStack 瘫痪 - 每天5分钟玩转 OpenStack(160)
这是 OpenStack 实施经验分享系列的第 10 篇.是软件就会有 bug,OpenStack 也不例外,只要用它就一定会遇到故障.Troubleshooting(故障排除)是运维 OpenSta ...
- RabbitMQ in Action (2): Running and administering Rabbit
Server management the Erlang node and the Erlang application Starting nodes multiple Erlang applicat ...
- Understanding When to use RabbitMQ or Apache Kafka
https://content.pivotal.io/rabbitmq/understanding-when-to-use-rabbitmq-or-apache-kafka How do humans ...
- C++使用RabbitMQ类库做客户端与RabbitMQ Server通讯,生成C++可调用的rabbimq.*.dll的过程
Step: download the latest rabbitmq-c via: https://github.com/alanxz/rabbitmq-c follow the document, ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- RabbitMq应用二
在应用一中,基本的消息队列使用已经完成了,在实际项目中,一定会出现各种各样的需求和问题,rabbitmq内置的很多强大机制和功能会帮助我们解决很多的问题,下面就一个一个的一起学习一下. 消息响应机制 ...
- 如何优雅的使用RabbitMQ
RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具.消息队列的使用场景大概有3种: 1.系统集成,分布式系统的设 ...
随机推荐
- 泛化之美--C++11可变模版参数的妙用
1概述 C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数.任意类型的参数.相比C++98/03 ...
- Linux下修改IP、DNS、路由命令行设置
本文最后修改时间:20180313 一.快速修改,重启后设置就没了 ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up route add defa ...
- mybatis学习系列一
1引入dtd约束(6) Mybatis git地址:https://github.com/mybatis/mybatis-3/wiki/Maven 指导手册:http://www.mybatis.or ...
- The stacking context
文档中的层叠上下文由满足以下任意一个条件的元素形成: 1. z-index 值不为 "auto"的 绝对/相对定位. 2. position位fixed. 3. opacity 属 ...
- webrtc学习: 部署stun和turn服务器
webrtc的P2P穿透部分是由libjingle实现的. 步骤顺序大概是这样的: 1. 尝试直连. 2. 通过stun服务器进行穿透 3. 无法穿透则通过turn服务器中转. stun 服务器比较简 ...
- [20180612]删除bootstrap$记录无法启动.txt
[20180612]删除bootstrap$记录无法启动.txt --//前几天看链接http://www.xifenfei.com/2018/05/willfully-delete-bootstra ...
- 用Python实现数据结构之链表
链表 链表与栈,队列不一样,它是由一个个节点构成的,每个节点存储着本身的一些信息,也存储着其他一个或多个节点的引用,可以从一个节点找到其他的节点,节点与节点之间就像是有链连在一起一样,这种数据结构就叫 ...
- U盘内容被病毒隐藏的解决办法(亲测可用)
前几天用U盘的时候不小心感染上了病毒,用自己的电脑打开后里面只剩下一个U盘的快捷方式,选中显示隐藏文件之后依然没有任何显示,但是查看U盘的属性的时候可以看到,U盘已经使用了300多M,所以就上网查了一 ...
- 皮肤控件IrisSkin4.dll调用样例-vs2010-c#
http://blog.csdn.net/wy7980/article/details/41933095
- 管道流_PipedInputStream与PipedOutputStream
输入和输出可以直接进行连接,通过结合线程使用(一个线程用于写,另一个用于读,因为管道输入流(读)是要读取管道输出流的数据的,又因为输入流中的read方法是阻塞式的,当两个流在同一个线程中时,输入流的r ...