【问题标题】:WF performance with new 20,000 persisted workflow instances each monthWF 性能,每月新增 20,000 个持久工作流实例
【发布时间】:2009-04-23 06:38:13
【问题描述】:

Windows Workflow Foundation 存在一个问题,即持续执行 WF 实例时速度很慢。 我打算做一个项目,其业务层将基于 WF 公开的 WCF 服务。该项目每月将创建 20,000 个新的工作流实例,每个实例最多可能需要 2 个月才能完成。 我被引导相信,考虑到性能原因,考虑到 WF 在进行持久性时会变慢,我给定的问题将是无法实现的。 我有以下问题:

  1. 这是真的吗?我的表现会不会因为这种负载而变得糟糕(考虑到 WF 持久性速度限制)
  2. 我该如何解决这个问题?

我们目前有两种可能的解决方案: 1. 每个新的业务流程请求(例如,给我一个新的驾驶执照)都将是一个新的 WF 实例,并且通过将所有状态请求操作转发到单独数据库中保存的状态值来限制持久性操作的数量。 2. 在任何给定时间都只有少量的工作流实例,没有任何持久性(仅在系统崩溃等情况下),通过将每个工作流stap 分解到一个单独的worklof 并且该工作流处理每个业务流程请求系统中当前步骤的实例(例如,我正在提交我的驾驶执照申请表,这是第一步……我们有 100 个案例,我的第一步工作流程将同时处理每个案例)。

我对这个问题的解决方案非常感兴趣。如果您想讨论这个问题,请随时通过 nstjelja@gmail.com 给我发邮件

【问题讨论】:

    标签: persistence workflow-foundation


    【解决方案1】:

    水合执行 wokflows 的数量将由环境因素内存服务器通过 put 等决定。持久性问题只有在您一直在加载和卸载工作流时才会发挥作用,也就是在这种情况下工作流可能不会成为最好的解决方案。

    【讨论】:

    • 另外,请注意您在事务日志中跟踪的事件级别。您的数据库会很快变得非常满。
    【解决方案2】:

    在我当前的项目中,我们还使用持久性 WF。我们没有完全相同的数量(可能大约 2000 个实例/月),而且它们通常不需要很长时间才能完成(它们通常在 5 分钟内完成,在某些情况下需要几天)。我们确实决定将主要工作流程分为两部分,即正常等待状态。我不能说我注意到了系统的任何性能差异,但它确实简化了它,因为我们的系统有时会在将传入信号与正确的工作流实例匹配时出现问题(这是我们代码中的一个问题;不在WF)。

    我认为,如果我要开始一个基于 WF 的新项目,我宁愿选择按顺序调用的较小工作流,而不是让大型工作流处理整个流程。

    【讨论】:

      【解决方案3】:

      说实话我还在研究工作流基础的性能特征。

      但是,如果有帮助的话,我听说 WF 团队在新版本的 WF 4 中进行了许多性能改进。

      这里有几个链接可能会有所帮助(如果您还没有看到它们)

      A Developer's Introduction to Windows Workflow Foundation (WF) in .NET 4 (discusses performance improvements)

      Performance Characteristics of Windows Workflow Foundation (applies to WF 3.0)

      【讨论】:

        【解决方案4】:

        3.5 上的 WF 存在性能问题。 WF4 没有 - 每月 20000 个 WF 实例不算什么。如果你每分钟都在说话,我会担心的。

        【讨论】:

        • 更新:我有一个 WF 4 状态机,有数万个并发实例,没有任何性能问题。但是,在使用队列时,您必须注意一些问题 - 例如,如果您将消息突发到数千个 WF 实例,您可能会耗尽默认的 ADO.NET 连接池设置 (100) 以及其他内容。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多