记一次erlang语言bug导致rabbitmq的队列没有消费者的问题
公司开发和测试环境采用的erlang版本是19.0.3,rabbitmq版本为3.6.10。集群条件下稳定使用了近一年时间,没什么问题。
为了保持和线下一致,线上生产环境采用了相同的版本,运行几个月后,出现问题。现象如下:
在几天时间内,有三个队列出现没有消费者的问题。查看rabbitmq的日志。
operation queue.declare caused a channel exception not_found: failed to perform operation on queue '出现问题的队列' in vhost '/' due to timeout
根据https://bugzilla.redhat.com/show_bug.cgi?id=1418668,这个bug在3.6.3已经修复,单我们还是有问题。
此时,通过管理页面,无法删除队列,报错类似,是queue.delete超时。根据https://github.com/rabbitmq/rabbitmq-server/issues/1333的反馈
通过命令
rabbitmqctl eval 'rabbit_amqqueue:internal_delete({resource,<<"所在vhost">>,queue,<<"出问题的队列">>}).'
关闭应用,删除队列后,有可能回复。
最终,继续深入查看错误日志
{gen_server2,call,[<0.26274.8>,{init,new},infinity]}},
[{gen_server2,call,3,[{file,"src/gen_server2.erl"},{line,327}]},
{rabbit_channel,handle_method,3,
[{file,"src/rabbit_channel.erl"},{line,1335}]},
{rabbit_channel,handle_cast,2,
[{file,"src/rabbit_channel.erl"},{line,459}]},
{gen_server2,handle_msg,2,[{file,"src/gen_server2.erl"},{line,1048}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}
=ERROR REPORT==== 2-May-2018::20:26:08 ===
Restarting crashed queue '问题队列' in vhost '/'.
至此,怀疑是erlang语言有bug。
查看rabbitmq官网。
http://www.rabbitmq.com/which-erlang.html,此页面介绍了rabbitmq需要的erlang版本,并提示了修复的bug

这两个解决的问题,很显然就是我们的问题。所以对erlang和rabbitmq进行了升级。
为了保证平滑升级,不停机,我们仅将erlang升级到19.3.6.8,rabbitmq升级到3.6.14。否则需要停集群
具体升级很简单,停rabbitmq-server服务,然后卸载erlang,此时会把rabbitmq也卸载。然后安装新的erlang和rabbitmq,启动服务后,自动就在集群里面了
记一次erlang语言bug导致rabbitmq的队列没有消费者的问题的更多相关文章
- Go语言系列之RabbitMQ消息队列
1. RabbitMQ是什么? MQ 是什么?队列是什么,MQ 我们可以理解为消息队列,队列我们可以理解为管道.以管道的方式做消息传递. 生活场景: 1.其实我们在双11的时候,当我们凌晨大量的秒 ...
- 在 CentOS7 上安装 RabbitMQ 消息队列中间件
RabbitMQ 是流行的开源消息队列系统,是 AMQP(Advanced Message Queuing Protocol 高级消息队列协议)的标准实现,用 erlang 语言开发.RabbitMQ ...
- golang监听rabbitmq消息队列任务断线自动重连接
需求背景: goalng常驻内存任务脚本监听rbmq执行任务 任务脚本由supervisor来管理 当rabbitmq长时间断开连接会出现如下图 进程处于fatal状态 假如因为不可抗拒因素,rabb ...
- Erlang语言介绍
Erlang (/ˈɜrlæŋ/ er-lang) is a general-purpose concurrent, garbage-collected programming language an ...
- 记一次线上bug排查-quartz线程调度相关
记一次线上bug排查,与各位共同探讨. 概述:使用quartz做的定时任务,正式生产环境有个任务延迟了1小时之久才触发.在这一小时里各种排查找不出问题,直到延迟时间结束了,该任务才珊珊触发.原因主要就 ...
- 程序bug导致了天大的损失,要枪毙程序猿吗?[ZZ]
来自猫扑:程序bug导致了天大的损失,要枪毙程序猿吗? 0 引言 年会上Review 源代码算什么? 法庭上 Review code 才带劲..... 2015年9月3日,随着东京最高法院驳回瑞穗证券 ...
- 服务器cpu过高修复:操作系统内核bug导致
服务器cpu过高修复:操作系统内核bug导致修改系统内核参数/etc/sysctl.conf添加下面2条参数:vm.dirty_background_ratio=5vm.dirty_ratio=10
- 内核futex的BUG导致程序hang死问题排查
https://mp.weixin.qq.com/s/sGS-Kw18sDnGEMfQrbPbVw 内核futex的BUG导致程序hang死问题排查 原创: 王领先 58架构师 今天 近日,Had ...
- 解决由于显卡驱动BUG导致桌面右键卡顿的问题:bat文件源码
@ ECHO OFF%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe&q ...
随机推荐
- Ubuntu下安装GTK环境
要生成C图形界面的程序,得安装GTK环境 安装GTK环境只要安装一个gnome-core-devel就可以了,里面集成了很多其他的包.除此之外还要转一些其他的 东西,如libglib2.0 ...
- 套接字输入缓冲装置——InternalInputBuffer
互联网的世界很复杂,信息从一端传向另一端过程也相当复杂,中间可能通过若干个硬件,为了提高发送和接收效率,在发送端及接收端都将引入缓冲区,所以两端的套接字都拥有各自的缓冲区,当然这种缓冲区的引入也带来了 ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 原帖来自Ray Wunderlich写的精彩的文章 How To ...
- Unity UGUI基础之InputField
InputField(输入域):为文本输入控件,等同于NGUI的Input. 一.InputField组件: Text Component(文本组件):此输入域的文本显示组件,需带有Text组件. T ...
- iOS中 自定义cell升级版 (高级)
接上次分享的自定义cell进行了优化:http://blog.csdn.net/qq_31810357/article/details/49611255 指定根视图: self.window.root ...
- Hive drop table卡住的问题
在hive中,show tables,create 等命令能正常执行,删除表drop table x时,会出现卡住的现象. 进入mysql, show variables like 'char%' 可 ...
- oracle ebs应用产品安全性-安全性规则
定义: 通过为段指定包括下限值与上限值的值范围,可以定义安全性规则要素.安全性规则要素适用于包括在指定值范围内的所有段值. 可以将每个安全性规则要素标识为"包括"或"排除 ...
- Leetcode_27_Remove Element
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41577997 Remove Element Given a ...
- Java 类加载机制 ClassLoder
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹 一个类从被加载到内存中开始到卸载出内存为止,它的整个生命周期包括了:加载(loading).验证(V ...
- 开源项目管理系统:ProjectForge
ProjectForge是一个Java编写的开源的基于Web的项目管理解决方案.包括:工时表(Timesheet).费用管理.项目甘特图,控制和管理工程分解结构.集成JiRA做为问题管理系统. 使用的 ...