【问题标题】:How to tune a WCF Service for better performance using ServiceThrottling如何使用 ServiceThrottling 调整 WCF 服务以获得更好的性能
【发布时间】:2023-03-26 03:20:01
【问题描述】:

我是 WCF 服务的新手。

我们有一个监听 MSMQ 的服务。 服务的 maxConcurrentInstances 和 maxConcurrentSessions 设置为 1。 这导致队列中有大量消息,并且消息服务缓慢。

serviceThrottling 元素中的 maxConcurrentInstancesma​​xConcurrentSessions 属性有什么区别。

目前服务 120 条消息需要 10 分钟,这非常慢。

提高服务性能的理想值应该是多少。

提前致谢

【问题讨论】:

    标签: c# .net wcf


    【解决方案1】:

    maxConcurrentInstances:无论并发模式和实例上下文模式如何,可以同时服务请求的服务类实例的最大数量。

    maxConcurrentSessions:同时活动的 WCF 会话的最大数量。


    假设并发模式设置为 NO multithreading。

    IF Instance context mode = Per session 
       THEN  Max number of requests processed in parallel = Min(maxConcurrentInstances, maxConcurrentSessions)
    
    IF Instance context mode = Per call 
       THEN Max number of requests processed in parallel = maxConcurrentInstances
    
    IF Instance context mode = Single 
       THEN Max number of requests processed in parallel = 1
    

    假设并发模式设置为多线程。

    单个实例现在可以处理多个请求,但您必须处理并发问题。


    重要的问题是:如何选择实例上下文模式?

    • 您对多线程编程没有信心:坚持 PerSessionPerCall
    • 您无需在来自同一客户端的调用之间将数据保持在服务级别:避免 PerSession
    • 创建服务的新实例成本非常高:使用 Single,但要准备好处理并发问题。

    之后就是调整最大实例数(对于 PerCall)和会话数(对于 PerSession)。通常,您首先将其设置为任意数字,例如 100,然后查看它是否会使事情变得更快。如果是这样,那很好。如果没有,请检查您的实例是否足够快地创建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 2014-08-14
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多