WCF节流设置

sca*_*cci 6 c# wcf msmq

我一直在使用WCF和MSMQ进行概念验证.我一直在使用默认值本文进行限制设置,并将我自己的设置添加到配置文件中.我有2个运行此应用程序的四核Xeon CPU.无论我应用什么设置,它总是只能一次抓取8条消息(与我的处理内核相匹配).我希望在一个事务中处理每个消息,这可能是问题的一部分......不确定.我jsut假设它会同时处理更多的消息.

服务行为:

   [ServiceBehavior(UseSynchronizationContext = true,
                     ReleaseServiceInstanceOnTransactionComplete=true,
                     ConcurrencyMode = ConcurrencyMode.Single,
                     InstanceContextMode = InstanceContextMode.PerCall)]
Run Code Online (Sandbox Code Playgroud)

端点行为:

  <endpointBehaviors>
    <behavior name="endpointBehavior">
      <transactedBatching maxBatchSize="1" />
    </behavior>
  </endpointBehaviors>
Run Code Online (Sandbox Code Playgroud)

我自己的服务节流:

<serviceThrottling maxConcurrentCalls="128" maxConcurrentSessions="800" />
Run Code Online (Sandbox Code Playgroud)

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

编辑

我已经修改了ConcurrencyMode(Changed to Multiple)以及ReleaseServiceInstanceOnTransactionComplete设置.改为多人似乎没有改变什么?

编辑 是否可能是TransactionBatch设置?我有那个......?

谢谢,

小号

sca*_*cci 4

我发现一个博客为我提供了一些有关 WCF 限制/性能的优秀文档。我向处理应用程序添加了更多元输出,并且能够获得我想要的性能。通过向我的进程添加更多信息(ManagedThreadID 等),我可以看到我获得的吞吐量比我最初假设的要高得多。我还发现下面博客中的一些提示很有帮助。

博客

谢谢,

S