別のプログラムで実行される HTTP リスナーにデータを送信するクライアント アプリに、以下のコードがあります。
try
{
using (WebClient client = new WebClient())
{
client.Encoding = System.Text.Encoding.UTF8;
client.Credentials = new NetworkCredential(NotificationUser, NotificationPassword);
client.UploadString(NotificationUrl, msg); // Notification URL is IP base not DNS name.
}
}
catch (Exception ex){}
高負荷環境でテストしており、リクエスト/レスポンスのレイテンシのストレス テストを試みています。両方のプログラムを同じマシンに配置すると、投稿アプリから http リスナー アプリに 1 秒間に約 160 件のメッセージが送信されますが、http リスナー アプリを同じネットワーク (ローカル ネットワーク) 上の別のマシンに配置すると、社内で作成します)、その数は約 5 メッセージ/秒に減少します。
これまでに試したことは次のとおりです。
- 2 番目のマシンへの ping は 1 ミリ秒未満で応答することを示し、tracert はホップが 1 つしかないことを示します。2 台のマシン間にファイアウォールやプロキシはありません。
- fiddlerとStressStimulusを使用して、別のマシンのリスナー アプリにポストする大量のトラフィックを生成したところ、(約 160 メッセージ/秒) を取得しました。私の意見では、これによりネットワークの遅延が除外されるか、リスナー アプリに問題があるかどうかが決まります。
- 投稿アプリで UploadString の代わりに UploadStringAsync を使用しようとしましたが、それほど違いはありませんでした。
- ウイルス対策などはありません...
奇妙なことに、リスナー アプリが同じマシン上にある場合、この同じコードは正常に動作します。HTTP投稿に制限があること、または私が見落としていることを誰かが知っていますか?