您现在的位置是:亿华云 > 系统运维
.NET Core HttpClient请求异常思考
亿华云2025-10-09 01:36:16【系统运维】3人已围观
简介本文转载自微信公众号「JeffckyShare」,作者Jeffcky 。转载本文请联系JeffckyShare公众号。下面我们结合如下两个异常信息进行大致排查分析,到底什么时候会抛出这两个异常信息呢?
本文转载自微信公众号「JeffckyShare」,请求异作者Jeffcky 。常思转载本文请联系JeffckyShare公众号。请求异
下面我们结合如下两个异常信息进行大致排查分析,常思到底什么时候会抛出这两个异常信息呢?请求异
异常信息分析
上述异常说到底还是连接问题导致,但是常思连接超时有很多种情况,比如客户端主动关闭连接,请求异又比如服务端对请求应答超时等等,常思这里给出仅我个人理解的请求异常见情况,大家可以作为基本参考
大前提:根据项目实际情况,常思分析实际业务对应场景,请求异主要考虑以下最后两个因素
一是常思,适当观察下数据量大小,请求异万一偶尔出现数据量达到M级别呢,常思当然既然考虑HTTP,请求异这种情况可以基本忽略
二是,亿华云HTTP是否还能承载对应业务,排除性能瓶颈
三是,评估考虑是否增加自身平台请求超时时间设置?同时也清楚自身平台是否存在请求非常频繁?以及也一定要了解对接方是否存在处理请求非常耗时?
首先,若以上两者都不是,可以从网络原因开始分析,比如防火墙设置(根据操作系统不同而采取对应方案)、DNS解析设置(有参数可配置刷新DNS解析)、IP设置、代理设置(有参数可配置忽略代理)等等
其次,保证启用客户端持久化连接以及增加连接数限制
//增加保活机制,表明连接为长连接 client.DefaultRequestHeaders.Connection.Add("keep-alive"); //启用保活机制(保持活动超时设置为 2 小时,并将保持活动间隔设置为 1 秒。) ServicePointManager.SetTcpKeepAlive(true, 7200000, 1000); //默认连接数限制为2,增加连接数限制 ServicePointManager.DefaultConnectionLimit = 512;然后,云服务器依然不能解决问题,尝试使用Socket通信连接
var client = new HttpClient(new SocketsHttpHandler() { //考虑忽略使用代理 UseProxy = false, //考虑增加连接数配置 MaxConnectionsPerServer = 100, //考虑忽略重定向响应 AllowAutoRedirect = false, //考虑忽略SSL证书验证 SslOptions = new SslClientAuthenticationOptions() { RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true }, //考虑数据压缩设置 AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip, }) { BaseAddress = new Uri(""), Timeout = TimeSpan.FromSeconds(30), };最后,还不能解决问题,若是Windows通过WireShark抓包分析,若是Linux使用tcpdump抓包,结合WireShark分析
如果其他干扰因素都已经基本排除,同时通过WireShark抓包一切正常,是不是没辙了
自信一点,适当怀疑一下HttpClient本身可能就存在这样的问题呢?
考虑在Windows和Linux系统分别测试验证,最终确认是否是HttpClient底层在两者系统上机制的有些不同,导致存在的bug呢?
香港云服务器很赞哦!(67787)
相关文章
- 主流搜索引擎显示的相关搜索项越多,越能积极反映该域名的市场价值。同时,被评估域名的搜索引擎显示结果不佳可能是由于以下两个原因:
- 当AI融入生活:能力越大,管理越难!
- 一文带你解读JavaScript的基本用法
- 学习笔记--分布式数字华容道(下)
- 投资各类域名就像到处打游击战,结果处处失败。因为这样,对任何一个中国域名市场的走势和价格都没有准确的把握,所以最好缩小范围,准确把握战场态势,埋伏。
- 浅析 Go 与 C 的指针
- 一个Bug,差点毁灭世界...
- 使用 FIO 对 Kubernetes 持久卷进行 Benchmark:读/写(IOPS)、带宽(MB/s)和延迟
- 为什么喜欢国外注册域名?国外注册域名注意什么?
- NetBeans、Eclipse和IntelliJ,哪个才是最优秀的Java IDE?
站长推荐
互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
Netty常用招式—ChannelHandler与编解码
复杂推理模型从服务器移植到Web浏览器的理论和实战
使用 Psycopg2 时遇到的两个坑
2、根据用户基础选择访问提供程序。由于互联问题的存在,接入商的选择也非常重要,如果用户群主要在联通,尽量选择联通接入较好的接入商,如果用户群主要在电信,那么选择电信接入较好的接入商。如果用户组位于国家/地区,则选择更好的访问提供程序进行交互。
HarmonyOS基础之Fraction用法介绍
Lerna + Dumi + Eslint多包管理实践
C++20新特性的小细节,你掌握了吗?