我一直致力于使用 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 等)添加更多信息,我可以看到我获得的吞吐量比我最初假设的要多得多。我还在下面的博客中发现了一些有用的提示。
谢谢,
小号
关于c# - WCF 节流设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8746396/