我们在客户端应用程序中有一个代码,它将数据发布到另一个程序上运行的 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){}
我们正在高负载环境中对其进行测试,并尝试对请求/响应延迟进行压力测试。如果我将两个程序放在同一台机器上,我会在一秒钟内从发布应用程序发送大约 160 条消息到 http 侦听器应用程序,但是如果我将 http 侦听器应用程序放在同一网络上的不同机器上(本地网络我们在内部创建),这个数字下降到大约 5 条消息/秒。
以下是我们迄今为止所做的尝试:
- ping 到第二台机器显示它在不到 1 毫秒的时间内响应,tracert 显示它只有一跳。两台机器之间没有防火墙或代理。
- 我使用fiddler和StressStimulus来生成大量流量以发布到另一台机器上的监听器应用程序,我得到了(大约160 条消息/秒)。在我看来,这排除了网络延迟或侦听器应用程序是否存在问题。
- 我尝试在发布应用程序中使用 UploadStringAsync 而不是 UploadString,但这并没有太大的不同。
- 没有杀毒软件等...
奇怪的是,如果侦听器应用程序在同一台机器上,同样的代码可以正常工作。有谁知道 HTTP 帖子有任何限制或我忽略了什么?