更长的发送超时意味着更长的延迟?

时间:2013-02-28 02:24:17

标签: .net performance wcf timeout

我可能会因数据库负载过大和数据庞大而频繁发送超时错误。如果将回复发送到wcf请求需要3分钟,那么将超时设置为3+分钟就足够了。

但这是否意味着端口80将忙3分钟,并且在当前端口完成之前不会发送其他回复?

如果是这种情况,那么我需要优化我的WCF并重建索引,并且可能需要对服务器的硬件进行一些升级。

1 个答案:

答案 0 :(得分:0)

是的,WCF线程系统确实具有可根据您的服务限制配置和实例模式处理的特定数量的并发线程/进程。它不会阻止单个请求的端口80,因此它不会妨碍它;但是,如果你有很多并发用户,如果他们都运行长服务操作调用并使用你所有的线程,它可能会使系统陷入困境。

您仍然应该考虑优化您的服务/数据库。您正常使用它的客户是什么?如果它是网络,那么显然3分钟太长时间不能等待。至少我知道如果事情花了这么长时间我就会离开!

正如这句话所说的那样,有很多方法可以让猫皮肤不知道你的整个系统就很难选择单一的使用,所以这里有一些选择(抛出更多的硬件应该是最后的手段) :

从数据库的角度来看,如果获取数据花费很长时间,也许您应该考虑对数据进行反规范化/预处理以使其更容易检索。

从服务的角度来看,有一些方法可以至少将控制权交还给客户端,以便在等待服务操作完成时继续处理。

  1. 完成后,使用双向呼叫和回调客户端
  2. 使用带有ID的单向请求,手动客户端“检查完成”
  3. 使用MSMQ处理并保留结果以供客户端完成检查