gRPCの接続が上手くいかない場合の対処方法
仕事でgRPCを使ったツールを使っているのですが(サーバー側C++/クライアント側C#)、接続が失敗する人がいました。その時は環境のせいかなぁ?と思っていたのですが、ちょっと人数が多くなってきて、本気で調べてみたのでその備忘録です。
まずgRPCの詳細ログの機能を有効にします。
上記のページに書いてある通り、以下の環境変数を設定します。
GRPC_TRACE=all
GRPC_VERBOSITY=DEBUG
PCの設定で設定してもよいですし、C#のコードでEnvironment.SetEnvironmentVariableを使って設定しても大丈夫です。
で、接続できない状態を再現してログを確認。
大量のログが出ているので、error等の文字列で少しずつ見ていきます。
今回は以下のようなエラーが出ていました。
handshake_manager ... "HTTP proxy returned response code 503"
これですね。
どうやらproxy環境で環境変数にhttp_proxyやhttps_proxyを設定していると、
localhost接続等でもproxyを見に行ってしまうらしく、接続に失敗するようです。
上記どちらかの対応で接続に成功するようになります。
no_proxy設定はPCの設定でもC#コードで設定しても大丈夫です。
困ったら詳細ログを出してエラーを特定し、ググる。
でとりあえず解決できると思います。