C# から呼び出された Mono の Dns クラスで、非常に再現性の高い問題に遭遇しました。複数のマシン (たとえば、クラスター上) から複数の呼び出しを行うと、多かれ少なかれ同時に (バッチ プログラムの起動時など) 、いくつかの乱数の呼び出しがハングします。
Mono Dns クラスが適切にタイムアウトしてリクエストを再発行していない可能性が高いようです。DNS は UDP ベースの RPC プロトコルを使用しますが、UDP は信頼できないため、10 個のパケットが DNS サーバーに同時にヒットした場合、または何かと 1 つのパケットがヒットした場合紛失した場合、返信はありません。
これが私の質問です: Mono の C# から Dns.GetHostName または Dns.GetHostInfo への呼び出しを中断するクリーンな方法を知っている人はいますか?