gpt4 book ai didi

c# - 如何使用 ServiceThrottling 调整 WCF 服务以获得更好的性能

转载 作者:太空狗 更新时间:2023-10-29 23:24:59 25 4
gpt4 key购买 nike

我是 WCF 服务的新手。

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

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

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

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

提前致谢

最佳答案

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

maxConcurrentSessions:同时事件的最大 WCF session 数。


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

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)和 session 数(对于 PerSession)。通常你首先将它设置为一个任意数字,比如 100,然后看看它是否能让事情变得更快。如果是这样,那很好。如果不是,请检查您的实例是否足够快来创建。

关于c# - 如何使用 ServiceThrottling 调整 WCF 服务以获得更好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11644616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com