.NET Core HttpClient请求异常思考

【导读】上一篇我们讨论了针对项目上异常信息的具体分析而给出对应解决方案,本篇仅是我个人对相关异常信息了解过后的进一步学习和思考,希望对后续遇到此异常信息的同学们给予思路扩展

下面我们结合如下两个异常信息进行大致排查分析,到底什么时候会抛出这两个异常信息呢?

异常信息分析

上述异常说到底还是连接问题导致,但是连接超时有很多种情况,比如客户端主动关闭连接,又比如服务端对请求应答超时等等,这里给出仅我个人理解的常见情况,大家可以作为基本参考

大前提:根据项目实际情况,分析实际业务对应场景,主要考虑以下最后两个因素

一是,适当观察下数据量大小,万一偶尔出现数据量达到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呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员编程10大原则,请牢牢记住!

全世界只有3.14 % 的人关注了数据与算法之美1、想清楚,再动手写代码刚入行的新手,为了展示自己的能力,拿到需求迫不及待地就开始上手写代码,大忌!2、不交流,就会头破血流不爱说话和沟通,需求都理…

技术分享|基于SQL Server Change Tracking实现宽表的增量更新

源宝导读:在企业建设信息化的过程中,客户通常会使用一些数仓工具来构建数据资产,随着用户的要求越来越高,传统的ETL技术已经无法满足客户的实时性诉求,本文将分享“天际-数据平台”如何基于SQL Server来实现数仓数据的…

C# 文件操作详解(一)---------File类

C#对文件的操作相当方便,主要涉及到四个类:File、FileInfo、Directory、DirectoryInfo,前两个提供了针对文件的操作,后两个提供了针对目录的操作,类图关系如下: 图1:类图 下面通过实例来看下每个…

小时“数感”好,长大才能数学好

▲数据汪特别推荐点击上图进入玩酷屋很多妈妈都无比担心孩子的数学:孩子会不会像自己一样重蹈覆辙呢?在很多人眼里,数学是一堆怎么也弄不明白的公式、符号,而且是怎么努力怎么用功死活就是学不好的一门学科。可是,同样…

java并行流 阻塞主线程_多线程入门案例与java8的并行流

java8 实例请移步https://www.cnblogs.com/ngLee/p/14021859.html进程与线程进程是所有线程的集合,每一个线程是进程中的一条执行路径。多线程的创建方式,继承Thread\实现Runable/*** 第一种创建线程的方式,继承Thread*/public class MultiTh…

BlazorCharts 原生图表库的建设历程

点击蓝字关注我们背景目前 Blazor 中可用的图表组件库主要有以下几个:ant-design-blazor/ant-design-charts-blazor-基于G2Plot mariusmuntean/ChartJs.Blazor- 基于ChartJs blazor-cn/Blazor.ECharts- 基于EChartsant-design-charts-blazor是我主导完成的&#xff…

别光顾着背单词了,每天花18分钟做这件事,英语水平暴增!

全世界只有3.14 % 的人关注了数据与算法之美在知乎上看过一个问题:在当今社会,英语还重要吗?点赞第一的回答是——英语可以差,但你的口语一定要好!你记住了1万个单词、将语法书倒背如流、英语成绩名列前茅、英语证书一…

WPF 路径动画PathAnimations的使用

在wpf中让一个控件按照一定的路径运行的动画。。叫做路径动画&#xff0c;这个示例演示了让一个rectangle按照一个s形曲线反复运行的动画。效果&#xff1a;只有一个文件&#xff1a;全部代码如下 &#xff1a;<Window x:Class"wpfcore.MainWindow"xmlns"htt…

STEM科学实验:测试了2000+儿童后证明它秒杀了90%的玩具!

▲数据汪特别推荐点击上图进入玩酷屋除了ipad和那些普通的玩具&#xff0c;我们还能给孩子玩儿些什么&#xff1f;当然是“玩”科学。因为创造力是他们这个年纪&#xff0c;最需要培养的东西。真正的科学启蒙不是将科学知识生硬的灌输给孩子&#xff0c;而是要让孩子在探索中能…

人工智能时代,学好数学有什么用?

随着科技的快速发展&#xff0c;人工智能的热度越来越高。而数学知识蕴含着处理智能问题的基本思想与方法&#xff0c;是理解复杂算法的必备要素。在机器学习工作流程中&#xff0c;数学与代码高度交织在一起&#xff0c;代码通常可以根据数学直观地构建&#xff0c;甚至会共享…

使用CLI模板 | Visual Studio 2019(16.10)新功能试用

Visual Studio很早以前就有模板了&#xff0c;.NET Core命令行界面&#xff08;CLI&#xff09;也能够安装模板并通过dotnet new命令使用它们。然而&#xff0c;但是并没有什么简单的方法可以在Visual Studio中直接使用这些模板。在Visual Studio 2019(16.10)中&#xff0c;启用…

jmeter测试java服务_Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

前言JMS 介绍:JMS 即 Java 消息服务(Java Message Service)应用程序接口&#xff0c;是一个 Java 平台中关于面向消息中间件(MOM)的 API&#xff0c;用于在两个应用程序之间&#xff0c;或分布式系统中发送消息&#xff0c;进行异步通信。(百度)本文只测试 ActiveMQ,其他消息中…

MetroGridHelper: A helpful debugging assistant for designers and developers alike

You’ve heard me preach it before: fix those margins, align, and try and make your apps as beautiful and inspiring as you can (see also: my designer tips for developers). On Thursday, I stopped by the Windows Phone Design Team’s beautiful studio space her…

马斯克和贝索斯的“星球大战”

全世界只有3.14 % 的人关注了数据与算法之美商业太空计划已经蓬勃发展了十年。在这个领域中&#xff0c;最雄心勃勃的两家公司当属Blue Origin&#xff08;蓝色起源&#xff09;和SpaceX&#xff08;太空探索技术公司&#xff09;&#xff0c;而它们之间的竞争一直是众人的焦点…

java pojo 是什么_什么是POJO

POJO(Plain Old Java Objects)简单的Java对象&#xff0c;实际就是普通JavaBeans&#xff0c;是为了避免和EJB混淆所创造的简称。在Java应用程序中的角色使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其gettersetter方法的类,没有业务逻辑&#xf…

JMeter基础知识

2019独角兽企业重金招聘Python工程师标准>>> 1.JMeter常用术语 1&#xff09;采样器&#xff08;Samplers&#xff09; 采样器是JMeter测试脚本的基础单元&#xff0c;用户可以用他来向服务器发出一个特定的请求&#xff0c;比如HTTP请求、JAVA请求。 2&#xff…

开年趣图汇总:对不起,让你笑了这么久

全世界只有3.14 % 的人关注了数据与算法之美房东家小孩抓周&#xff0c;感觉不管抓什么都很有未来....计算机语言成就一段恋情程序员&#xff0c;千万别像他学习如果编程语言是工具你这工作怎么越做越晚呢&#xff1f;那一刻&#xff0c;程序员露出了尴尬又不失礼貌的微笑这个名…

【视频回放】Best of Build Tour in China 暨 Watching Party - 大湾区专场

活动介绍微软一年一度的Build大会已经在5月25-27日盛大召开&#xff0c;今年的主题演讲&#xff0c;全球CEO Satya Nadella从开发者速度&#xff0c;智能云原生应用&#xff0c;以及在混合工作场景下提高生产力等诸多话题进行探讨。为了让技术社区和开发者更好地了解微软Build大…

Entity Framework Core 6.0 预览4 性能改进

起因微软在Build2021开发者大会上,发布Entity Framework Core 6.0(简称EFCore 6)预览第四版,号称是性能版本,性能提升主要对于Entity Framework Core 5.性能改进:EFCore 5.0和EFCore 6.0基准测试,提升了70%.在查询时,比EFCore5.0提升了31%.内存改进了不少,减少43%.减少内存分配…

这个地球仪太惊艳了,陪孩子畅聊天文地理。

▲数据汪特别推荐点击上图进入玩酷屋一个人一旦对某事物有了浓厚的兴趣&#xff0c;就会主动去求知、去探索、去实践&#xff0c;并在求知、探索、实践中产生愉快的情绪和体验。所以&#xff0c;古今中外的教育家无不重视兴趣在智力开发中的作用。小木之前推荐过一款AR地球仪&a…