gpt4 book ai didi

WCF 无法达到 100% CPU。瓶颈是什么?

转载 作者:行者123 更新时间:2023-12-04 16:08:18 25 4
gpt4 key购买 nike

我正在对自托管 nettcp WCF 服务进行基准测试,从 50 个线程向位于不同计算机的服务发出请求。问题是至强 E3-1270 的 CPU 利用率从未超过 35%。当我在两核笔记本电脑上运行相同的测试时,它确实达到了 100%。

WCF方法什么都不做,所以不应该受IO限制。我试图增加线程数,但这无济于事。每个线程创建一个服务 channel 并重复使用该 channel 实例执行数千次调用。

这是我正在使用的服务类:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class TestService : ITestService
{
public void Void()
{
// DO NOTHING
}
}

配置:

服务节流行为:
MaxConcurrentCalls = 1000
MaxConcurrentInstances = 1000,
最大并发 session 数 = 1000

NetTcpBinding
ListenBacklog = 2000
最大连接数 = 2000

最佳答案

我会尝试将您的 InstanceContextMode 更改为 电话 .我很确定您当前的配置设置将被忽略,因为 WFC 只会创建您的类的单个实例并将按顺序处理它们。使用 PerCall 将为每个请求创建一个新实例,直到达到最大线程数或您的配置限制。您也不应该需要 netTcpBinding 设置,但要保持节流行为,但要确保比例正确,否则可能会产生不利影响。

  • MaxConcurrentCalls:16 * 处理器计数
  • MaxConcurrentSessions:100 * 处理器计数
  • MaxConcurrentInstance: Sum (116 * Processor Count)
  • 关于WCF 无法达到 100% CPU。瓶颈是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169151/

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