首页 > 解决方案 > 通过 HttpClient 抛出错误的真正快速的 PostAsync 调用

问题描述

我正在尝试对我的服务进行压力测试。为此,我打电话

await client.PostAsync(url, content);

通过那里的正常呼叫工作得很好。但是当我重击时,上面的客户端调用(发布到服务)开始失败。

起初它开始给出这个错误:

System.Threading.Tasks.TaskCanceledException:任务被取消。

它也会给出这个错误:

System.Net.Sockets.SocketException (10055):无法对套接字执行操作,因为系统缺少足够的缓冲区空间或队列已满。

然后在短时间内,错误变为:

System.Net.Sockets.SocketException (10048):每个套接字地址(协议/网络地址/端口)通常只允许使用一次。

我的代码是 NuGet 包的一部分,它将在普通的 .Net Framework 应用程序(WCF、WPF、ASP.NET 等)和更新的 ASP.Net Core 3.1 中运行。

因此,我真的很难轻松访问 .Net Core DI 框架。(我真的不想为普通的 .Net Framework 制作它,也不想为 ASP.NET Core 3.1 应用程序制作另一个 DI 实例。)

所以我创造了我HttpClient这样的。

private static readonly HttpClient client = new HttpClient{Timeout = TimeSpan.FromSeconds(25)};

我是否需要为所有人设置一些其他配置HttpClient来处理大量非常快速的呼叫(最快大约 250,000 个)?

或者有什么方法可以检测到HttpClient饱和并等到它处于更好的状态?

标签: c#.net.net-coredotnet-httpclient

解决方案


推荐阅读