Php RabbitMQ-两个EC2实例之间的间歇性etimedout错误

Php RabbitMQ-两个EC2实例之间的间歇性etimedout错误,php,ubuntu,amazon-ec2,rabbitmq,Php,Ubuntu,Amazon Ec2,Rabbitmq,我在同一可用性区域和安全组中有两个Ubuntu EC2实例。web服务器正在服务器A上运行,它使用RabbitMQ将长期运行作业的请求传递回服务器B RabbitMQ服务器正在服务器A上运行。服务器B正在侦听服务器A上的队列 大多数情况下,系统都能按预期工作。用户在web服务器(服务器A)上执行操作,将作业排入队列,服务器B接收消息并执行作业。在这些情况下,RabbitMQ日志显示一秒钟内服务的请求: =INFO REPORT==== 29-Nov-2016::00:07:11 === acce

我在同一可用性区域和安全组中有两个Ubuntu EC2实例。web服务器正在服务器A上运行,它使用RabbitMQ将长期运行作业的请求传递回服务器B

RabbitMQ服务器正在服务器A上运行。服务器B正在侦听服务器A上的队列

大多数情况下,系统都能按预期工作。用户在web服务器(服务器A)上执行操作,将作业排入队列,服务器B接收消息并执行作业。在这些情况下,RabbitMQ日志显示一秒钟内服务的请求:

=INFO REPORT==== 29-Nov-2016::00:07:11 ===
accepting AMQP connection <0.31632.2> (###.###.###.###:51968 -> ###.###.###.###:5672)

=INFO REPORT==== 29-Nov-2016::00:07:11 ===
closing AMQP connection <0.31632.2> (###.###.###.###:51968 -> ###.###.###.###:5672)

如何调试此问题?我已经确认,在服务器B上运行
nmap
时,服务器A的RabbitMQ端口似乎处于打开状态,并且安装程序在部分时间内正常工作。有没有关于如何调试故障案例的想法?

亚马逊网络基础设施可能正在强制关闭服务器之间的“空闲”连接

尝试向连接配置中添加心跳信号。这将强制连接保持活动状态,即使服务器之间没有消息移动

30秒的心跳可能就足够了。如果需要的话,你可以降一点。不过,我不确定EC2如何确定“空闲”连接

=ERROR REPORT==== 28-Nov-2016::21:56:51 ===
closing AMQP connection <0.21543.0> (###.###.###.###:56827 -> ###.###.###.###:5672):
{inet_error,etimedout}