c# - WCF 节流设置

标签 c# wcf msmq

我一直致力于使用 WCF 和 MSMQ 进行概念验证。我一直在使用默认值 This Article 来调整 throttle 设置。并将我自己的设置添加到配置文件中。我有 2 个运行此应用程序的四核至强 CPU。无论我应用什么设置,它总是一次只能抓取 8 条消息(这与我的处理核心相匹配)。我希望在单个事务中处理每条消息,以便这可能是问题的一部分……不确定。我只是假设它会同时处理比实际更多的消息。

服务行为:

   [ServiceBehavior(UseSynchronizationContext = true,
                     ReleaseServiceInstanceOnTransactionComplete=true,
                     ConcurrencyMode = ConcurrencyMode.Single,
                     InstanceContextMode = InstanceContextMode.PerCall)]

端点行为:

  <endpointBehaviors>
    <behavior name="endpointBehavior">
      <transactedBatching maxBatchSize="1" />
    </behavior>
  </endpointBehaviors>

我自己的服务限制:

<serviceThrottling maxConcurrentCalls="128" maxConcurrentSessions="800" />

我是不是忽略了什么?也许我只是不完全理解默认/自定义 throttle 设置(可能)。

编辑

我修改了 ConcurrencyMode(更改为多个)以及 ReleaseServiceInstanceOnTransactionComplete 设置。更改为 Multiple 似乎没有任何改变?

编辑 可能是 TransactionBatch 设置?我把它设置为一个...?

谢谢,

小号

最佳答案

我发现了一个博客,它向我指出了一些关于 WCF 节流/性能的很好的文档。我向我的处理应用程序添加了一些更多的元输出,并且能够获得我正在寻找的性能。通过向我的进程(ManagedThreadID 等)添加更多信息,我可以看到我获得的吞吐量比我最初假设的要多得多。我还在下面的博客中发现了一些有用的提示。

Blog

谢谢,

小号

关于c# - WCF 节流设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8746396/

相关文章:

c# - 涉及 EntityFramework/SQL Server 和 NServiceBus/MSMQ 的分布式事务中的非同时提交

wcf - 如何使用多个 WCF 服务实例强制执行消息队列序列

c# - 如何通过工作组连接到 MSMQ?

c# - WIX CAQuietExec NETSH 命令失败

c# - SemanticZoom ZoomedOutView SelectedItems 返回 DependencyObject

c# - 从 xml 文件加载 System.Diagnostics.TraceSource 的配置

c# - Html.ActionLink 扩展

wcf - Ninject 和 WCF 服务授权管理器

wcf - 如何避免 WCF 中的大量通信类?

.net - 无法在 Windows 8.1 上安装 TCP 激活