问题描述
我们正在使用.NET 4.8 HttpClient通过HTTPS从系统A向系统B发送许多小的JSON休息请求。 我们使用HttpClient的单例实例,并通过以下方式设置实例:
ServicePointManager.UseNagleAlgorithm = false;
ServicePointManager.DefaultConnectionLimit = 50;
ServicePointManager.Expect100Continue = false;
//ServicePointManager.MaxServicePointIdleTime = 5000;
//ServicePointManager.EnablednsRoundRobin = true;
//ServicePointManager.DnsRefreshTimeout = 1000 * 60;
请注意,我们也尝试了注释设置,但运气不好(其中最后两个实际上使情况变得更糟)
系统A正在发送请求,并且由Azure负载均衡器后面的多台计算机组成。 系统B正在接收请求并使用DNS轮询
我们遇到的行为与此处描述的行为类似:System.Net.HttpClient - Unexplained timeout when calling GetAsync
有些呼叫会花费很长时间,而其中的一些会在大约10秒钟后失败,并显示以下错误消息:
在另一端禁用DNS轮询,问题消失了。重新启用DNS轮询后,问题就会再次出现。
有人遇到过与DNS循环和HttpClient相关的类似问题吗?您对如何解决此问题有任何建议吗? (我们正在考虑启用跟踪,但是这很棘手,因为它是一个有大量流量通过的生产环境。)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)