我有一个脚本使用工作流和 Foreach -Parallel -ThrottleLimit 15 如果循环中的代码是简单的像写输出或一些基本的数学和睡眠语句,但当我交换实际的逻辑(更新特定客户端的产品)时它工作正常5个帽子同时运行 .

不幸的是,我无法发布完整的源代码,但是在更高级别,更新过程偶尔从一些配置文件中读取,写入日志文件(每个线程的单独日志),读取/写入几个数据库,没有任何原因导致CPU / RAM / IO到最大值或任何其他但据我们所知,这些资源上的线程之间没有争用 .

我们研究过的事情:

  • Powershell 3的硬限制为5(我们正在使用Powershell 5,并且在用简单的数学和写入输出替换实际工作时一次可以运行超过5个)

  • CPU / RAM /磁盘IO看起来都非常稳定(没有超出或大量增加)

  • 在这个参数上查找MS文档(没有太多可用,并且没有看到_333239)

我不知道还有什么地方可以解决这个问题 . 起初我们认为ThrottleLimit可能是最大值,实际数量是基于资源的动态,但我们的有限测试似乎表明即使CPU和内存非常高,它也会使用完整的15 . 此外, very first 迭代的上限为5,早在任何资源实际被大量使用之前(在更新脚本中有一个15分钟的 start-sleep 因为我们允许我们的用户在继续执行之前完成他们正在做的事情取下数据库进行更新 . )

有没有人能够深入了解我们可以检查或研究的其他可能导致此问题的内容?我们之前的并行逻辑是使用Jobs,我希望避免回到那个逻辑,因为它看起来应该完全正常 .