今週末、イリノイ州ライルで開催された SharePoint Saturday で、Robert Bogue 氏は、アクティブなワークフローと実行中のワークフローには違いがあると述べました。ネットで調べたのですが、どなたか教えていただけないでしょうか?
サーバー上で最大数百万のアクティブなワークフローを持つことができるのに、サーバーごとに 15 程度のワークフローしか実行できないのはなぜですか?
今週末、イリノイ州ライルで開催された SharePoint Saturday で、Robert Bogue 氏は、アクティブなワークフローと実行中のワークフローには違いがあると述べました。ネットで調べたのですが、どなたか教えていただけないでしょうか?
サーバー上で最大数百万のアクティブなワークフローを持つことができるのに、サーバーごとに 15 程度のワークフローしか実行できないのはなぜですか?
はい、違いがあります:
OnItemChanged
またはを待機していDelayActivity
ます。これを理解するための鍵は、WorkflowEventDeliveryThrottleです(2010のドキュメントが存在しないため、ここではSP2007の場合)。このプロパティの標準値は15です。つまり、同時に実行できる並行ワークフローは15個だけです。この制限に達すると、ワークフローはOWSTimerのキューに入れられ、OWSTimerは任意の時間の後にワークフローを実行します(ワークフロータイマージョブは5分ごとに設定されていると思います)。
このスロットルは、次を使用して変更できますstsadm
(AFAIK Powershellは機能しません。もちろん設定のコードを使用してプロパティを変更できますSPWebService.WorkflowEventDeliveryThrottle
):
stsadm -o setproperty -pn workflow-eventdelivery-throttle -pv "20"
これで、「実行中」のワークフローの最大数(「同時に処理できるワークフローイベントの最大数」の方が良い)は20になります。誰かがパラメーターを操作する他のSO投稿を参照してください。
ワークフローイベント処理を理解するための優れた技術ブログ投稿があります:「workflow-eventdelivery-throttle」パラメーターについて。
スロットルと同様に、WorkflowEventDeliveryBatchSizeは、バッチで処理されるワークフローイベントの最大数を示します。