C# Web API サーバーと Node Express サーバーがあります。C# サーバーから Node サーバー上のルートに何百ものリクエストを行います。ノード サーバー上のルートは集中的な作業を行い、多くの場合 6 ~ 8 秒間返されません。
これらのリクエストを何百も同時に行うと、Node サーバーが失敗するようです。Node サーバー出力のエラーには、 または のいずれsocket hang up
かが含まれますECONNRESET
。C#側からのエラーは言う
ターゲット マシンがアクティブに拒否したため、接続できませんでした。
このエラーは、予測できない数のリクエストを処理した後に発生するため、サーバーが過負荷になっているだけだと思います。C# 側でa を使用するThread.Sleep(500)
と、より多くのリクエストを処理できるようになり、そこで待機をいじることで多かれ少なかれ成功しますが、スレッドのスリープが正しい答えになることはめったになく、このケースも例外ではないと思います。
ノードサーバーに過度のストレスをかけているだけですか? これは、ロード バランシングまたは何らかの形式のクラスタリングでのみ解決できますか? 別の代替案がある場合、それはどのように見えるでしょうか?
私が探求し始めている 1 つの道は、node-toobusy
モジュールです。503 を返した場合、次のコードではどのようなプロセスが必要ですか? Thread.Sleep
その後、リクエストを再送信する必要がありますか?