0

WorkflowServiceHostクラスを介して小さなワークフローをホストしています。

using (WorkflowServiceHost wfHost = new WorkflowServiceHost(new QueueWorkflow(), new Uri("net.pipe://localhost/workflow")))
{
    wfHost.Open();
    Console.ReadLine();
}

このワークフローは、Receive アクティビティを使用した着信 WCF 呼び出し (現在は NetPipe バインディング) によって開始され、カスタム アクティビティに進み、何らかの作業を行った後、ブックマークを作成してアイドル状態になります (アンロードしません)。

これはすべて最初はうまくいきましたが、1000 個のワークフローを開始するようにロード テスターをセットアップすると、928 個のワークフロー インスタンスが開始され、ブックマークの作成に進みます。残りの 72 個のブロックは WCF または Receive アクティビティにあります。

  • テストは常に928 個のワークフロー インスタンスで停止します。(ワークフロー メモリの制限でしょうか?)
  • ワークフローの 1 つを再開し、完了するまで実行できるようにすると、ブロックされた開始要求のリスト内の次のワークフローを開始できます。

どんなアイデアでも大歓迎です。

4

1 に答える 1

1

ここでserviceThrottlingが役割を果たしていると思われます。これは WCF に影響するだけでなく、WF4 ランタイムでも使用されます。設定を変更して、違いが生じるかどうかを確認してください。

私がそれについて書いたブログ投稿については、こちらを参照してください。

于 2011-09-22T07:25:26.983 に答える