WCF分布式开发常见错误(20):TimeoutException was unhandled

简介:
   在进行WCF应用程序开发的时候,如果大量客户端发送请求到WCF服务,往往会出现这个异常,超时。WCF服务响应超时。没有在指定的时间00:01:00内打开操作,分配给这个操作的时间或许只是超时时间的一部分。
  错误信息如下:
   The open operation did not complete within the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout.
【1】错误截图:
【2】原因分析:
    这个超时异常的产生,直接导致的原因是,大量的客户端请求发送给服务。我这里使用的100个客户端,实例化100个代理。然后请求。模拟客户端的大量并发请求。服务基本延时100MS。模拟处理。这里大概在10个请求的时候,服务处理出现阻塞。进而等待,最后出现超时异常。
【3】解决办法:
    涉及到大量请求的时候,可以考虑使用WCF的 ServiceThrottlingBehavior ,包括三个重要的属性: MaxConcurrentCalls、MaxConcurrentSessions、MaxConcurrentInstances,它们分别的默认值为16,10和26。 
名称 说明
ms522194.pubproperty(zh-cn,VS.90).gif MaxConcurrentCalls 获取或设置一个值,该值指定整个 ServiceHost 中正在处理的最多消息数。
ms522194.pubproperty(zh-cn,VS.90).gif MaxConcurrentInstances 获取或设置一个值,该值指定服务中可以一次执行的最多 InstanceContext 对象数。
ms522194.pubproperty(zh-cn,VS.90).gif MaxConcurrentSessions 获取或设置一个指定 ServiceHost 对象可一次接受的最多会话数的值。
  这里我们设置一下服务的限流行为就可以了。具体如下:
serviceBehaviors >
        
< behavior name = " WCFService.WCFServiceBehavior " >
          
< serviceTimeouts transactionTimeout = " 00:01:00 " />
          
< serviceMetadata httpGetEnabled = " true "   />
          
< serviceDebug includeExceptionDetailInFaults = " false "   />
          
< serviceThrottling maxConcurrentCalls = " 1000 "  maxConcurrentInstances = " 1000 "  maxConcurrentSessions = " 1000 " />-->
        
</ behavior >
      
</ serviceBehaviors >
   
   这里1000可以修改,根据你的实际WCF服务需求量。服务激活类型和实例调用方式。然后进行调整。修改完毕以后,重新启动服务,基本就正常了。
   最后是Demo程序下载: /Files/frank_xl/7.WCFServiceConcurrencyClientsFrankXuLei.rar
参考文章: http://msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior_properties.aspx


 本文转自 frankxulei 51CTO博客,原文链接:http://blog.51cto.com/frankxulei/320443,如需转载请自行联系原作者


目录
打赏
0
0
0
0
348
分享
相关文章
Java高级开发:高并发+分布式+高性能+Spring全家桶+性能优化
Java高架构师、分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师之路
|
10月前
|
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(一)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
132 0
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
HarmonyOS Next 是华为新一代操作系统,专注于分布式技术的深度应用与生态融合。本文通过技术特点、应用场景及实战案例,全面解析其核心技术架构与开发流程。重点介绍分布式软总线2.0、数据管理、任务调度等升级特性,并提供基于 ArkTS 的原生开发支持。通过开发跨设备协同音乐播放应用,展示分布式能力的实际应用,涵盖项目配置、主界面设计、分布式服务实现及部署调试步骤。此外,深入分析分布式数据同步原理、任务调度优化及常见问题解决方案,帮助开发者掌握 HarmonyOS Next 的核心技术和实战技巧。
381 76
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
DeepSeek进阶开发与应用4:DeepSeek中的分布式训练技术
随着深度学习模型和数据集规模的扩大,单机训练已无法满足需求,分布式训练技术应运而生。DeepSeek框架支持数据并行和模型并行两种模式,通过将计算任务分配到多个节点上并行执行,显著提高训练效率。本文介绍DeepSeek中的分布式训练技术,包括配置与启动方法,帮助用户轻松实现大规模模型训练。数据并行通过`MirroredStrategy`同步梯度,适用于大多数模型;模型并行则通过`ParameterServerStrategy`异步处理大模型。DeepSeek简化了分布式环境配置,支持单机多卡和多机多卡等场景。
开发实战:使用Redisson实现分布式延时消息,订单30分钟关闭的另外一种实现!
本文详细介绍了 Redisson 延迟队列(DelayedQueue)的实现原理,包括基本使用、内部数据结构、基本流程、发送和获取延时消息以及初始化延时队列等内容。文章通过代码示例和流程图,逐步解析了延迟消息的发送、接收及处理机制,帮助读者深入了解 Redisson 延迟队列的工作原理。
|
10月前
|
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
67 0
从桌面跃升至云端的华丽转身:深入解析如何运用WinForms与Azure的强大组合,解锁传统应用向现代化分布式系统演变的秘密,实现性能与安全性的双重飞跃——你不可不知的开发新模式
【8月更文挑战第31天】在数字化转型浪潮中,传统桌面应用面临新挑战。本文探讨如何融合Windows Forms(WinForms)与Microsoft Azure,助力应用向云端转型。通过Azure的虚拟机、容器及无服务器计算,可轻松解决性能瓶颈,满足全球用户需求。文中还提供了连接Azure数据库的示例代码,并介绍了集成Azure Storage和Functions的方法。尽管存在安全性、网络延迟及成本等问题,但合理设计架构可有效应对,帮助开发者构建高效可靠的现代应用。
70 0
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据缓存不一致分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据缓存不一致分析)
183 2
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
220 1
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
223 1

热门文章

最新文章