.net core 使用负载平衡器(F5)创建多个HttpClient连接时出现SocketError

.net core 使用负载平衡器(F5)创建多个HttpClient连接时出现SocketError,.net-core,httpclient,load-balancing,f5,.net-3.0,.net Core,Httpclient,Load Balancing,F5,.net 3.0,这正是错误日志中的异常 我有一个要求,我应该创建一组服务调用,并等待所有调用成功完成,然后再继续执行另一组服务调用 我有两个服务Service1和Service2。 在两个不同的服务器中有两个Service2实例,我们已经设置了一个F5(负载平衡器)来均匀分配负载 假设我一次有10个从Service1到Service2的服务调用,F5将在2个服务器之间共享这10个调用。i、 e.对每台服务器的Service2进行5次调用 但我观察到,如果这些10个调用中的任何一个都需要花费大量时间来完成它应该

这正是错误日志中的异常

我有一个要求,我应该创建一组服务调用,并等待所有调用成功完成,然后再继续执行另一组服务调用

我有两个服务Service1和Service2。 在两个不同的服务器中有两个Service2实例,我们已经设置了一个F5(负载平衡器)来均匀分配负载

假设我一次有10个从Service1到Service2的服务调用,F5将在2个服务器之间共享这10个调用。i、 e.对每台服务器的Service2进行5次调用

但我观察到,如果这些10个调用中的任何一个都需要花费大量时间来完成它应该做的工作(在Service2中要完成的工作有一些繁重的工作),那么我会抛出一个套接字异常,整个过程都会停止

然而,当我不使用F5负载平衡器,只使用1个服务实例2时。然后,不管这10个调用中的任何一个需要多长时间,它都不会抛出任何异常

我不确定这是否是F5配置的问题,或者是使用.Net代码中的F5进行连接的方式的问题

请仔细阅读下面的代码,了解我正在尝试做什么,并让我知道任何代码更改是否有助于我解决问题

for (int i=0 ; i< ReqList.Count;i++)
{
  maxTasks++;
  ClassA reqList = new ClassA();
  reqList = ReqList[i];
  List<ClassA> recsByReq = recs.Where(x => x.ReqId == reqList.ReqtId).ToList();
  ClassC service2Input = new ClassC();
  service2Input.DetaiList = listofRecs;
  service2Input.RecList = recsByReq;
  taskList.Add(_service2.Service2MethodCall(service2Input, service2Resource));
  if(maxTasks == 10 || ReqList.Count == 10 || i==ReqList.Count-1)
  {
    Task.WaitAll(taskList.ToArray(),-1);
    maxTasks = 0;
    taskList.Clear();
  }
                

将日志设置为文本而不是图像。“长”事务的持续时间是多少,tcp配置文件空闲超时设置为多少?持续时间也可能在几分钟到几小时(3-4小时)之间变化。我从F5团队了解到,TCP配置文件有300秒的空闲时间。@JasonRahm我们在使用TCP配置文件的同时使用循环。我们将其更改为最少连接(成员),http配置文件的超时设置为无穷大。这会引发一个与套接字异常不同的问题,即所有连接只发送到单个服务器,而以前使用TCP配置文件时,我看到连接分布,但会引发套接字异常。