HTTPClientFactory中释放TCP端口的机制是怎样的?

How is the mechanism of releasing TCP port in HTTPClientFactory?

在我当前的项目版本中,HttpClinet 已用于创建请求。但是在请求的高峰时间,我们的大多数 TCP 端口进入 等待状态,任务完成后它们的状态保持在大约 2 分钟事件。我读了一些关于 IHttpClientFactory 的文章。

但我不确定这个解决方案如何解决我们的问题。任何想法将不胜感激。

有很多文章可以告诉您为什么不应该处理 HttpClient(这会导致您提到的结果,并最终导致套接字耗尽问题),而是使用 IHttpClientFactory 来管理生命-HttpClient 相关服务的周期。

这是因为每次用 HttpClient 发出请求,并在使用后处理它,都会导致套接字处于 TIME_WAIT 状态,想象一下如果你在几秒钟内发出几千次请求,你会 运行 出套接字。 IHttpClientFactory 是一个合同,可以更好地管理您的 Http 服务,并在您无需管理的情况下重新使用连接池中的套接字。

首先,通过这个,我认为它提供了足够的信息。关于您想实现的目标,

https://docs.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

上面文章的重点之一,回答你关于 IHttpClientFactory 如何解决你的问题的问题,

Each time you get an HttpClient object from the IHttpClientFactory, a new instance is returned. But each HttpClient uses an HttpMessageHandler that's pooled and reused by the IHttpClientFactory to reduce resource consumption, as long as the HttpMessageHandler's lifetime hasn't expired.

希望对您有所帮助!