【问题标题】:How does Task Parallel Library scale on a terminal server or in a web application?任务并行库如何在终端服务器或 Web 应用程序中扩展?
【发布时间】:2010-05-07 23:23:03
【问题描述】:

我了解,当我执行 Parallel.For 和类似构造之类的操作时,TPL 会为其任务使用工作窃取队列。

如果我理解正确,该构造将启动许多任务,每个任务都将开始处理项目。如果其中一项任务完成了分配的项目,它将开始从尚未完成的其他任务中窃取项目。这解决了项目 1-100 的处理成本低而项目 101-200 的处理成本高的问题,并且这两个任务中的一个将闲置直到另一个完成。 (我知道这是一个简化的解释。)

但是,这将如何在终端服务器或 Web 应用程序中扩展(假设我们在将在 Web 应用程序中运行的代码中使用 TPL)?我们是否可以仅仅因为我们的应用程序的 N 个实例并排运行而冒着使 CPU 饱和的风险?

我应该阅读有关此主题的任何信息吗?我还没有找到任何特别的东西,但这并不意味着没有。

【问题讨论】:

    标签: .net-4.0 task-parallel-library multi-user


    【解决方案1】:

    您或许可以使用 TPL 通过迁移到异步模型来改进 I/O 绑定操作。您还可以通过在低负载情况下更多地利用 Web 服务器上可用的未使用处理器容量来改善请求延迟。您需要仔细考虑这一点,因为在处理器已经 100% 使用的高负载下,增加更多并行度会降低服务器的吞吐量。

    这在 Parallel Extensions 团队博客上进行了讨论:

    Using Parallel Extensions for .NET 4 in ASP.NET apps

    我怀疑同样的论点也适用于终端服务器应用程序。

    【讨论】:

    • 感谢您的链接,这类信息正是我想要的。
    猜你喜欢
    • 2021-03-04
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2023-04-06
    • 2011-02-08
    • 2014-07-03
    相关资源
    最近更新 更多