一次奇怪的RabbitMQ超时异常
事情起源于一次本地安装和配置rabbitmq,代码之前是ok的,只是把rabbitmq服务器的ip网段调整到和开发机器不同的网段后(备注,有设置两者互通,并且防火墙也是通的);
但是当做完rabbitmq服务器的网段后,开发机器的代码就访问rabbitmq,就报错connection error or timeout。
1. 环境介绍
rabbitmq 服务器:192.168.13.21
开发机器:192.168.3.6
两者网络是联通的,并且rabbitmq服务器的防火墙是允许客户端ip访问端口5672( amqp)和15672(http web)
cmd >> ping 192.168.13.21
cmd >> telnet 192.168.13.21 5672
2. old 代码,原有的timeout,分别设置如下
启动程序报错,如下:
3. new 代码,修改的timeout,分别设置如下:同时必须增加sethandshaketimeout参数
连接和执行成功,如下:
4.解决办法:
最后,发现根本原因,可能是本地开发机器和rabbitmq服务器之间,不同网段的地址或ip解析产生过多耗时。
原因:本地开发机器的网卡设置,我是通过增加一个ip="192.168.13.6",来实现本地开发机器和“rabbitmq服务器”之间不同网段的互相通讯。
step 1: 修改rabbitmq服务器的host文件,告诉rabbbitmq服务器,他自己的ip和hostname
root >> vi /etc/host
# 增加如下参数
然后,重启一下rabbitmq
root >> systemctl restart rabbitmq-server
step 2: 重新在开发机器上,测试之前的old代码
# 测试之前的old代码,timeout设置还是60ms,没有添加参数sethandshaketimeout。
# 但是,这次连接和发送rabbitmq成功
推荐阅读
-
RabbitMQ的简单模式快速入门与超时异常的处理方法
-
python爬虫之urllib,伪装,超时设置,异常处理的方法
-
记一次NET Core 2.0在macOS 10.13出现的奇怪Build IO共享冲突问题
-
记录一次排查使用HttpWebRequest发送请求的发生“基础连接已关闭:接收时发生错误”异常问题的过程
-
记录一次springsecurity5.0.6做权限登录异常缓慢的问题解决记录
-
MongoDB查询字段没有创建索引导致的连接超时异常解案例分享
-
RabbitMQ的第一次亲密接触
-
一次线上Redis类转换异常排查引发的思考
-
记录一次Flink作业异常的排查过程
-
奇怪的异常---“不支持的字符集 !!: DBConversion”