【发布时间】:2015-08-20 12:24:16
【问题描述】:
我们有一个从 Windows 服务调用的 wcf 服务(比如说 WCF 服务 A)。
在 WCF 服务 A 中,我们使用 Parallel.ForEach 创建 5 个线程来执行相同的方法(例如方法 A)
此方法 A 调用 WCF 服务 B 中的方法 B,方法 B 调用 WCF 服务 C 中的方法 C,方法 C 调用 WCF 服务 D 中的方法 D。
现在的问题是,在 WCF 服务 D 中对方法 D 的调用在 WCF 服务 C 的方法 C 中超时。我以某种方式删除了方法 C 中对方法 D 的调用,但现在对方法 C 的调用在方法 B 中超时WCF 服务 B。
ServiceThrottling 受到限制,在 DB 中未发现死锁。
当传递给 Parallel.ForEach 的列表只有一项时,同样的代码也可以工作。
【问题讨论】:
-
什么操作耗时过长导致超时?慢服务在做什么工作?由于您在多个连接上查询数据库,SQL Server 无法检测到死锁。