2016-04-07 23 views
0

私はRabbitMQキューから受信したすべてのURLをクロールするための小さなプログラムを作成しています。私は約6000件のURLでテストし、半分が処理された後、クライアントは例外なく停止し、rabbitmqサーバーへの接続はすべて失われます。私はまた、ログをチェックし、RabbitMqクライアントクローズTCP接続が突然

=WARNING REPORT==== 7-Apr-2016::10:40:50 === 
closing AMQP connection <0.32373.9> (192.168.55.1:55716 -> 192.168.55.100:5672): 
connection_closed_abruptly 

のようないくつかのものを持ってきた私は、この接続ファクトリの設定を使用しています:

ConnectionFactory factory = new ConnectionFactory(); 
     factory.setHost("192.168.55.100"); 
     factory.setUsername(params.username); 
     factory.setPassword(params.password); 
     factory.setVirtualHost(params.virtualHost); 
     factory.setAutomaticRecoveryEnabled(true); 
     factory.setRequestedHeartbeat(2); 

あなたはこれについていくつかのアイデアを持っていますか?よろしく!

答えて

1

さらに多くの接続を処理するには、RabbitMQとOSを設定する必要があります。

これを読む:https://www.rabbitmq.com/networking.html

ErlangのVM I/OスレッドプールErlangのランタイムは、非同期I/O操作を実行 ためのスレッドのプールを使用しています。プールのサイズは、+ A VMコマンドラインフラグで設定された です。 + 128我々は非常に RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS環境変数使用してフラグを上書きをお勧めします:

RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS = "+ 128"

もこの:https://www.rabbitmq.com/production-checklist.html

ファイルを開くにはハンドルの制限をオペレーティングシステムでは、同時に開いているファイルハンドル(ネットワークソケットを含む)の最大数は に制限されています。 に、同時接続とキューの予想数が になるように制限が設定されていることを確認してください。

+0

最後に、これが私の問題を解決します。ありがとう – innovatism