0

我遇到了奇怪的行为,我的 wcf wshttp 服务完成了数据处理(我知道是因为我在返回人员列表之前记录了一条消息)但客户端没有收到响应并坐在那里“挂起”。我将超时时间增加到 2 小时,即使服务在 20 分钟后完成检索数据,客户端也会在达到超时限制并收到超时异常之前挂起 2 小时。您可能已经猜到了,我从服务中返回了大量数据(大约 5 万个复杂对象)。我想要序列化的所有内容都有 [DataContract] 属性。

我已经完成的故障排除:

  1. 在我们的测试环境中,该服务似乎每次都能正常工作,并在 20 分钟后返回。

  2. 我们的生产服务器随机遇到上述问题。有时它会在 20 分钟后返回,有时客户端会在服务实际完成一小时 40 分钟后收到超时错误。

  3. 我启用了 wcf 跟踪,它跟踪的最后一件事是 Close ClientBase 语句。这是我在从方法返回之前做的最后一件事(除了之后的日志语句)。

  4. 我将大多数配置设置设置为它们的最大值以处理返回的大型数据集。

这是服务器/网络问题吗?我可以采取任何其他步骤来追踪此问题吗?

该服务托管在 IIS7 Windows Server 2008 R2 中。使用 .net 框架 4.5.2。

4

1 回答 1

0

看起来负载平衡器是问题所在。我们不得不增加负载均衡器上的响应超时(可能还有响应大小)。不确定这些设置在 lb 上的位置,因为我们的网络管理员进行了更改。

于 2017-10-16T21:34:16.080 回答