0

我经常收到发送超时错误,这可能是由于数据库负载过大和数据庞大。如果发送对 wcf 请求的回复需要 3 分钟,那么将超时设置为 3 分钟以上就足够了。

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

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

4

1 回答 1

0

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

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

俗话说,有很多方法可以给猫剥皮,如果不知道你的整个系统,很难选择一个来使用,所以这里有一些选择(在它上面扔更多的硬件应该是最后的手段):

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

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

  1. 完成后使用带有回调客户端的双工调​​用
  2. 使用带有 ID 的单向请求,手动客户端“检查完成”
  3. 使用 MSMQ 处理并保存结果以供客户端在完成时检查
于 2013-02-28T04:49:23.407 回答