c# - 通过 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
饱和并等到它处于更好的状态?
解决方案
推荐阅读
- wordpress - 为空时隐藏 ACF 字段
- node.js - 节点重定向到一个数组的随机链接
- reactjs - 如何在页面加载时调度 redux 操作以在 useEffect 中加载数据
- react-native - 为 ios 和 android 动态更新应用构建版本 - React Native
- javascript - res.json() 创建 CastError
- java - 从 java 在 MacOs 终端中运行命令
- javascript - 如何使用响应数组获取 YADCF 选择过滤器选项
- css - 创建按钮,鼠标悬停在右侧显示的箭头上
- .net - SOAP WCF Wrapped Object 引用未设置为对象的实例
- amazon-web-services - lambda 的 aws 编码部署策略