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



我经常收到发送超时错误,可能是由于数据库负载过大和数据量过大。如果向wcf请求发送应答需要3分钟,那么将超时设置为3+分钟就足够了。

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

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

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

你仍然应该考虑优化你的service/db。你的普通客户都用它做什么?如果是网页,那么显然3分钟的等待时间太长了。至少我知道,如果事情花那么长时间,我早就走了!

俗话说,有很多方法可以解决问题,在不了解整个系统的情况下,很难选择使用哪一个,所以这里有一些选择(最后应该向它添加更多的硬件):

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

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

  1. 使用双工调用,完成后回调客户端
  2. 使用带有Id的单向请求,使用手动客户端'check for complete'
  3. 使用MSMQ处理并保存结果供客户端完成后检查

相关内容

  • 没有找到相关文章

最新更新