2016-11-29 11 views
3

同じ可用性ゾーンとセキュリティグループに2つのUbuntu EC2インスタンスがあります。 WebサーバーはサーバーAで実行されており、長時間実行されているジョブの要求は、php-amqplibを使用してRabbitMQ経由でサーバーBに戻されます。RabbitMQ - 2つのEC2インスタンス間で間欠的なエラーが発生しました

の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) 

同じ要求を実行する場合しかし、私は断続的にetimedoutエラーを取得:

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

はどのようにこの問題をデバッグすることができます?サーバーBのnmapを実行しているときに、サーバーAのRabbitMQポートが開いているように見え、セットアップが時間の一部として機能することを確認しました。どのように失敗事件をデバッグするための任意のアイデア?

答えて

0

Amazonネットワークインフラストラクチャがサーバー間の「アイドル」接続を強制的に閉じる可能性があります。

接続設定にハートビートを追加してみてください。これにより、サーバー間でメッセージが移動していなくても、接続は強制的にアクティブになります。

https://www.rabbitmq.com/heartbeats.html

30秒ハートビートは十分であってもよいです。あなたが必要な場合は、あなたは低くなる可能性があります。私はEC2がどのように "アイドル"接続を決定するかはわかりません。

関連する問題