天天看点

wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 

http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d

大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 

wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 

Een vraag stellen

  • vrijdag 7 augustus 2009 2:57
    wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
    victoryliwenbo 0 Points  
    wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
    0 Aanmelden om te stemmen 现在在学习WCF技术,遇到了一个问题:当超过2000多个客户端应用程序同时调用一个服务器上的服务,该服务能不能承受得了?如果承受不了,有没有什么方法可以解决或者优化?并且我还想知道下WCF技术能实现的最大通信量是多少?
    • wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
      Reageren  
    • wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
      Citeren

Antwoorden

  • vrijdag 7 augustus 2009 3:41
    wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
    Frank Xu Lei SOA (MVP) 13.965 Points  
    wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
    wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 

    1 Aanmelden om te stemmen Hi victory,

       你提出的问题很好,这个问题,相信很多人学习了WCF编程以后,都会有这样的疑问,而且很多人在多测试的时候,往往还会出现大于10个客户端同时调用服务的时候,就会出错。服务没有相应,抛出Timeout 异常。

       你的问题其实本质上是关于WCF处理大规模并发客户端请求的问题。也就是WCF在处理大规模客户端请求的时候,有没有好的解决方案,或者表现。

       处理大规模客户端请求的,WCF确实能够胜任,因为其本身已经提供了很好的解决机制。

      关于并发客户端请求,WCF通过设置最大并发连接数目、会话数目、并发服务实例数目来进行处理。

    我测试的1000个并发请求,是可以顺利相应的。而且的测试机器是普通的PC机器,XP pro系统。

     涉及到大量请求的时候,可以考虑使用WCF的 ServiceThrottlingBehavior 属性。

    名称 说明
    wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
    MaxConcurrentCalls 获取或设置一个值,该值指定整个 ServiceHost 中正在处理的最多消息数。
    wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
    MaxConcurrentInstances 获取或设置一个值,该值指定服务中可以一次执行的最多 InstanceContext 对象数。
    wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
    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服务需求量。服务激活类型和实例调用方式。然后进行调整。修改完毕以后,重新启动服务,基本就正常了。

    这个是三个属性的测试例子。

    于此问题本质上相关的问题很多,中文和英文论坛都有人讨论过。一下是这写问题的连接:

    http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/155c87f0-a7d4-4c4e-b40b-6292d8731822

    http://social.microsoft.com/Forums/zh-CN/wcf/thread/3a89a21d-76ca-4941-8cbe-c89afb5d163b

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

      以上之时WCF提供给我们的可以使用的配置属性。你要想了解更深入的WCF底层线程模型和如何处理大量的客户端数据交互请求。可以了解一下

    IOCP在WCF里的应用。

      这个前段时间冰红茶在我的博客里提问,我花两周时间查找资料找出这个问题的答案。

    你可以参考一下。这个才是WCF能应付大量并发请求的本质所在。上面只是一些WCF的配置属性,数据应用的范畴。

    WCF热门问题编程示例(3):WCF是否使用或者支持IOCP(IO完成端口) 

    经典技术文章翻译(2)Does WCF use or Supports IOCP?WCF是否支持或者使用了IOCP完成端口。

       应该很有参考价值。

    希望对你的学习有帮助~

    Frank Xu Lei--谦卑若愚,好学若饥 

    专注于.NET平台下分布式应用系统开发和企业应用系统集成 

    Focus on Distributed Applications Development and EAI based on .NET 

    欢迎访问老徐的中文技术博客: Welcome to My Chinese Technical Blog 

    欢迎访问微软WCF中文技术论坛: Welcome to Microsoft Chinese WCF Forum 

    欢迎访问微软WCF英文技术论坛: Welcome to Microsoft English WCF Forum

    • Als antwoord gemarkeerd door victoryliwenbo vrijdag 7 augustus 2009 6:07
    • wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
      Reageren  
    • wcf 并发 http://social.microsoft.com/Forums/nl-NL/wcfzhchs/thread/3e79037b-afb5-402c-86d9-292779cd870d 大量客户端应用程序同时调用一个服务器上的服务,会不会使该服务承受不了?怎么解决? 
      Citeren

Mijn forumkoppelingen

  • Aanmelden bij Forums
  • Forums Home
  • Door forumgebruikers bladeren

Statistieken

  • Gestart: 7-8-2009
  • Laatste reactie: 7-8-2009
  • Als nuttig beoordeeld: 1
  • Reacties: 1
  • Weergaven: 4.090

Hulp nodig bij Forums? (veelgestelde vragen)   © 2012 Microsoft Corporation. Alle rechten voorbehouden.