当前位置:论坛首页 > Linux面板 > 求助

【已完成】docker运行的rabbitmq一段时间就崩了。

发表在 Linux面板2023-10-30 00:25 [复制链接] 11 3576

为了能快速了解并处理您的问题,请提供以下基础信息:
面板、插件版本:8.0.3

系统版本:Linux

问题描述:docker运行的rabbitmq,运行一个星期,容器状态显示“启动”但是实际MQ链接不上了。重启后最多可以运行40分钟。查不到问题,没办法只有回滚快照。自己感觉运行一个星期,什么满了一样导致崩了。但是查询服务器日记,没有内存不足触发oom。求助可以不可以协助查一下什么问题?

相关截图(日志、错误):

1.png
使用道具 举报 只看该作者 回复
发表于 2023-10-30 10:50:05 | 显示全部楼层
您好,通过您的截图日志中分析是有RabbitMQ消息确认超时的情况:
  1. [error] <0.767.0> Consumer 1 on 2 has timed out  waiting for delivery acknkwledgemet.Timeout used:1800000ms,This timeout value can be configured,see consumber doc guid to learn mor
复制代码

这个错误的意思是:1个RabbitMQ的通道在等待消费者确认的时候消息超时了,导致这个通道貝关闭,然后,应用或者服务在检测到消息通道错误后,选择关了了整个连接
出现这个问题的原因如下:
在 RabbitMQ 中,当消费者从队列中获取消息后,需要向 RabbitMQ 发送一个确认(ack)回执。这个确认通知 RabbitMQ 消息已经被成功接收并处理,然后 RabbitMQ 会从队列中移除这个消息。

然而,如果 RabbitMQ 在设定的超时时间内未接收到消费者的确认,它会认为这个消息可能没有被成功处理,因此会关闭对应的通道并报告这个错误。

这个超时时间可以在 RabbitMQ 的配置中进行调整。默认情况下,超时时间是 1800000 毫秒,即 30 分钟。

解决方案:
以下是一些可能的解决方案:

1、增加超时时间:可以考虑增加 RabbitMQ 的超时时间。这可以通过修改 RabbitMQ 的配置来实现,具体的步骤和配置项可能依赖于 RabbitMQ 版本和具体的使用场景。
2、优化消息处理:如果消费者在处理消息时耗时过长,你可能需要优化消息处理逻辑,使其能在更短的时间内完成任务并发送确认。
3、使用消息拆分:如果消息包含多个独立的任务,可以考虑将其拆分为多个消息,每个消息对应一个任务。这样,每个任务可以单独被确认,也不会阻塞其他任务的处理和确认。
4、使用异步确认:在某些情况下,也可以考虑使用异步确认。这样消费者可以立即接收下一个消息而不需要等待当前消息的确认,就是收到消息就确认,而不是等待执行完成。但是请注意,这可能会增加消息处理的复杂性和难度。
使用道具 举报 回复 支持 反对
大炮运维V587 发表于 2023-10-30 10:50
您好,通过您的截图日志中分析是有RabbitMQ消息确认超时的情况:

这个错误的意思是:1个RabbitMQ的通道在 ...

RabbitMQ 的配置默认情况下,超时时间是 1800000 毫秒,即 30 分钟。后不是直接丢弃吗,如果是这个问题,另外一台服务器也是默认配置,30分钟。就没出现过类似问题。是不是这台服务器环境问题也会导致这个超时啊
使用道具 举报 回复 支持 反对
发表于 2023-10-30 11:31:09 | 显示全部楼层
河南一卡易网络科技有限公司 发表于 2023-10-30 11:19
RabbitMQ 的配置默认情况下,超时时间是 1800000 毫秒,即 30 分钟。后不是直接丢弃吗,如果是这个问题, ...

您好,您要排查您的业务是不是需要进行优化,如果长时间的等待,可以提前结束,如果长连接过长,需要优化消息处理的逻辑了。
使用道具 举报 回复 支持 反对
大炮运维V587 发表于 2023-10-30 11:31
您好,您要排查您的业务是不是需要进行优化,如果长时间的等待,可以提前结束,如果长连接过长,需要优化 ...

这台服务器我已经修改了超时时间,刚才查看了其他服务器配置,都是默认的配置,30分钟。RabbitMQ运行一星期就会断连,一般什么会堆积的多了会让RabbitMQ断连啊,我现在估计是断连了才会超时
使用道具 举报 回复 支持 反对
发表于 2023-10-30 14:06:29 | 显示全部楼层
河南一卡易网络科技有限公司 发表于 2023-10-30 12:33
这台服务器我已经修改了超时时间,刚才查看了其他服务器配置,都是默认的配置,30分钟。RabbitMQ运行一星 ...

您好,您可以根据上面的解决方案进行排查和解决。
docker一般直接docker pull 下来的就是最新版的RabbitMQ。
使用道具 举报 回复 支持 反对
大炮运维V587 发表于 2023-10-30 14:06
您好,您可以根据上面的解决方案进行排查和解决。
docker一般直接docker pull 下来的就是最新版的RabbitM ...

上面几个验证了,不是上面问题啊。我看我们是RabbitMQ 3.12.6版。有没方法直接docker命令更新版本,不影响现有配置的
使用道具 举报 回复 支持 反对
发表于 2023-10-30 17:19:30 | 显示全部楼层
河南一卡易网络科技有限公司 发表于 2023-10-30 14:27
上面几个验证了,不是上面问题啊。我看我们是RabbitMQ 3.12.6版。有没方法直接docker命令更新版本,不影 ...

您好,您的容器是怎么部署的?直接docker run镜像名还是docker-compose?
参考这个教程
https://cloud.tencent.com/developer/article/2086860
使用道具 举报 回复 支持 反对
大炮运维V587 发表于 2023-10-30 17:19
您好,您的容器是怎么部署的?直接docker run镜像名还是docker-compose?
参考这个教程
https://cloud.te ...

就你教我的手动安装docker的方法啊,手动安装DockerCentOS/RedHat
1、删除之前安装的docker
yum remove docker docker-common docker-selinux docker-engine
复制代码
2、安装一些依赖
yum install -y yum-utils device-mapper-persistent-data lvm2 wget
复制代码
3、配置docker的安装源
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
复制代码
4、将安装源替换成清华源
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
复制代码
5、安装
yum makecache fast
yum install docker-ce
复制代码
然后(1)查找rabbitmq镜像 docker search rabbitmq
(2)使用docker拉取镜像文件  docker pull rabbitmq
使用道具 举报 回复 支持 反对
发表于 2023-10-31 15:33:31 | 显示全部楼层
河南一卡易网络科技有限公司 发表于 2023-10-30 17:59
就你教我的手动安装docker的方法啊,手动安装DockerCentOS/RedHat
1、删除之前安装的docker
yum remove d ...

您好,使用docker pull rabbitmq 时候,是拉取的当时执行命令的时候,rabbitmq最新版本
使用道具 举报 回复 支持 反对
大炮运维V587 发表于 2023-10-31 15:33
您好,使用docker pull rabbitmq 时候,是拉取的当时执行命令的时候,rabbitmq最新版本 ...

docker也重新拉,然后直接拉RabbitMQ ,最后也是RabbitMQ 3.12.6版。现在最新版本比这个高很多了
使用道具 举报 回复 支持 反对
发表于 2023-11-3 09:38:30 | 显示全部楼层
河南一卡易网络科技有限公司 发表于 2023-11-2 23:28
docker也重新拉,然后直接拉RabbitMQ ,最后也是RabbitMQ 3.12.6版。现在最新版本比这个高很多了 ...

您好,您可以直接到dockerhub上找最新版本的Rabbitmq的镜像rabbitmq - Official Image | Docker Hub
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表