1

我有一个应用程序可以启动一堆 HttpListener GetContextAsync' 任务——理想情况下每个请求一个

但是,当运行压力测试(使用 JMeter 进行测试)时,我似乎受 CPU 限制,但总共只有 50% 的 CPU 使用率(机器有 2 个 vcpus)

是否有我在这里遗漏的东西或者 linux 上的 .NET Core 中的一个怪癖,需要让它以超过 1 个核心运行?它准确地达到了 50% - 我也尝试使用信号量来限制并发连接等,但没有运气

创建任务的代码如下 - 根据我对 .NET 任务的理解,它们将在需要时启动新线程(但如果不需要,将共享)直到线程池被最大化 - 这应该会导致 100% 的 CPU 利用率

        while (_listener.IsListening)
        {
            HttpListenerContext c = await _listener.GetContextAsync();
            Task unawaited = RunContext(c);
        }
    
4

0 回答 0