公司开发和测试环境采用的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的队列没有消费者的问题的更多相关文章

  1. Go语言系列之RabbitMQ消息队列

    1. RabbitMQ是什么?   MQ 是什么?队列是什么,MQ 我们可以理解为消息队列,队列我们可以理解为管道.以管道的方式做消息传递. 生活场景: 1.其实我们在双11的时候,当我们凌晨大量的秒 ...

  2. 在 CentOS7 上安装 RabbitMQ 消息队列中间件

    RabbitMQ 是流行的开源消息队列系统,是 AMQP(Advanced Message Queuing Protocol 高级消息队列协议)的标准实现,用 erlang 语言开发.RabbitMQ ...

  3. golang监听rabbitmq消息队列任务断线自动重连接

    需求背景: goalng常驻内存任务脚本监听rbmq执行任务 任务脚本由supervisor来管理 当rabbitmq长时间断开连接会出现如下图 进程处于fatal状态 假如因为不可抗拒因素,rabb ...

  4. Erlang语言介绍

    Erlang (/ˈɜrlæŋ/ er-lang) is a general-purpose concurrent, garbage-collected programming language an ...

  5. 记一次线上bug排查-quartz线程调度相关

    记一次线上bug排查,与各位共同探讨. 概述:使用quartz做的定时任务,正式生产环境有个任务延迟了1小时之久才触发.在这一小时里各种排查找不出问题,直到延迟时间结束了,该任务才珊珊触发.原因主要就 ...

  6. 程序bug导致了天大的损失,要枪毙程序猿吗?[ZZ]

    来自猫扑:程序bug导致了天大的损失,要枪毙程序猿吗? 0 引言 年会上Review 源代码算什么? 法庭上 Review code 才带劲..... 2015年9月3日,随着东京最高法院驳回瑞穗证券 ...

  7. 服务器cpu过高修复:操作系统内核bug导致

    服务器cpu过高修复:操作系统内核bug导致修改系统内核参数/etc/sysctl.conf添加下面2条参数:vm.dirty_background_ratio=5vm.dirty_ratio=10

  8. 内核futex的BUG导致程序hang死问题排查

    https://mp.weixin.qq.com/s/sGS-Kw18sDnGEMfQrbPbVw 内核futex的BUG导致程序hang死问题排查 原创: 王领先 58架构师 今天   近日,Had ...

  9. 解决由于显卡驱动BUG导致桌面右键卡顿的问题:bat文件源码

    @ ECHO OFF%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe&q ...

随机推荐

  1. expect 简单使用

    简单的登陆脚本 这样就不用每次都输入ssh命令了,使用密码还是有些不安全,谨慎使用. #!/usr/bin/expect -f #filename: auto_login.sh #author: or ...

  2. 最简单的视频编码器:基于libx264(编码YUV为H.264)

    ===================================================== 最简单的视频编码器系列文章列表: 最简单的视频编码器:编译 最简单的视频编码器:基于libx ...

  3. mac 下终端 操作svn命令 以及出现证书错误的处理方法

    首先,转载地址:http://hi.baidu.com/zhu410289616/item/eaaf160f60eb0dc62f4c6b0e 还有一个地址:http://www.cnblogs.com ...

  4. J2EE进阶(二)从零开始之Struts2

    J2EE进阶(二)从零开始之Struts2 以前自己总是听说什么SSH框架,不明觉厉.现在自己要重整旗鼓,开始系统性的学习SSH框架了.首先开始Struts2的学习.其实自己之前参与过Struts2项 ...

  5. 关于Tomcat的URIEncoding以及GET乱码

    最近在维护着Linux上的服务器,当然,开发和前期测试是在windows上执行的. 在做意见反馈的时候,出现了windows上正常,Linux下却是乱码的问题. 先排查了web服务器与mysql的连接 ...

  6. C语言的预编译

    由"源代码"到"可执行文件"的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译 ...

  7. 使用github管理你的代码

    关于为什么使用github,网上已经有很多讨论了.当然选择还有google code, Bitbucket,sourceforge.github有如下优势: 1. github更有利于开源项目的发展 ...

  8. 从极大似然函数到EM算法

    最近看斯坦福大学的机器学习课程,空下来总结一下参数估计相关的算法知识. 一.极大似然估计: 大学概率论课程都有讲到参数估计的两种基本方法:极大似然估计.矩估计.两种方法都是利用样本信息尽量准确的去描述 ...

  9. 小强的HTML5移动开发之路(11)——链接,图片,表格,框架

    来自:http://blog.csdn.net/dawanganban/article/details/18098193 一.HTML是什么? HTML(hypertext mark-uplangua ...

  10. 解决Plugin is too old,please update to a more recent version,or set ANDROID_DAILY_OVERRIDE..

    今天遇到了很诡异的事情. 昨天晚上还好好的工程今天就挂了,提示如下错误: Plugin is too old,please update to a more recent version,or set ...