2017-02-15 15 views
1

私が知ることから、g​​RPCクライアントは自動的にバックオフアルゴリズムを使って失われた接続を再確立しようとします。私の目標はgRPCが少なくとも毎秒再接続を試みることです。Node.js実装でgRPCの再接続動作を変更するにはどうすればよいですか?

Go実装を使用すると、最初にサービスへの接続を確立するときにWithBackoffMaxDelayダイヤルオプションを渡すことができます。 Node.js実装で同じことをどうやって行うことができますか?


私はgrpc.max_reconnect_backoff_msオプションをクライアントコンストラクタに渡してみました。私が故意に-1のような無効な値を渡すと、gRPCはエラーメッセージを記録するので、正しく使用していると思います。

ただし、このオプションはgRPCの再接続動作に影響しないようです。代わりに、それはおよそすべての20代の再接続を試みるように表示されます。

I0215 21:21:07.246695000 140736304567232 subchannel.c:694] Connect failed: {"created":"@1487190067.246665000","description":"Failed to connect to remote host","errno":61,"file":"../src/core/lib/iomgr/tcp_client_uv.c","file_line":104,"os_error":"connection refused"} 
I0215 21:21:07.246910000 140736304567232 subchannel.c:491] Retry in 19.999536519 seconds 

がさらに混乱を、gRPCはすなわち、それは常に〜20代の値を使用して、すべてのバックオフアルゴリズムを使用していないようです。

答えて

1

私は同じ問題を持っていたし、(Cで)gRPCコア源を調査した後、私は問題を理解しました:しかし、

  • の@ murgatroid99で指摘したようにそれは、最大時間を設定することが可能です最小時間を設定することはできません。これは強制的に20秒です。

私はそれが設定可能作るため、gRPCリポジトリにプルリクエストを作りました: https://github.com/grpc/grpc/pull/10237

あなたが私のフォークから枝を使用する場合は、あなたのクライアントのコンストラクタでこれを行うことができるでしょう:

new ...client(host, credentials, { 
    'grpc.min_reconnect_backoff_ms': 1000, 
    'grpc.max_reconnect_backoff_ms': 10000, 
}) 
0

ノードgRPCクライアントコンストラクタは、オプションの第3引数と、基本となる実装のオプションを取ります。これらのオプションの1つは"grpc.max_reconnect_backoff_ms"です。名前が示すように、値はミリ秒単位であるため、値として1000を渡す必要があります。

+0

すばやく返信いただきありがとうございます。あなたの答えは私に一歩近づけましたが、残念ながらまだ問題を解決していません。私はいくつかの情報で質問を更新しました。 – csm

+1

@ murgatroid99私の答えを見てください! –

関連する問題