
- プロジェクトの workflow を構成し、本番環境で使用予定のハードウェアパラメーターに最も近い Processing Station を用意して、代表的な画像のバッチ を作成します。
- 1 コアで 1 バッチ を処理するのにかかる時間を測定します。 1 回だけ 1 バッチ を処理しても十分ではありません。FlexiCapture は利用可能なすべてのコアに処理を分散することがあるため、テスト中は 1 バッチ の処理時間が短く見えても、実際の本番環境では他のコアが別の batches の処理で使用されているためです。 信頼できる見積もりを得るには、代表的な バッチ のコピーを複数作成することをお勧めします。少なくともコア数と同じ数、できれば測定誤差を最小限に抑えるために N 倍 (N は少なくとも 3) 作成し、それらすべてを同時に処理に回します。この場合、1 コアあたり 1 バッチ の処理に必要な時間は、総処理時間を N で割った値になります。この見積もりでは、Processing Station の共有リソースをめぐる処理コア間の競合の可能性も考慮されます。 例。Hyper-Treading が有効な 8 コアの Processing Station があり、このステーションでは 16 個の論理コアと実行プロセスが得られるとします。代表的な バッチ のコピーを少なくとも 16 個作成する必要がありますが、測定誤差を最小限に抑えるには 16 x 3 = 48 個作成するのが望ましいです。すべての batches を FlexiCapture の hotfolder に入れ、最初の import task が作成された時点でタイマーを開始し、最後の結果がバックエンドにエクスポートされた時点で停止すると、15 分かかりました。この時間内に各コアは 3 batches を処理するため、1 バッチ の処理時間は約 5 分です。バッチ には 69 ページあるため、1 ページの処理には 4.35 秒かかると言えます。
- 1 時間あたりまたは 1 日あたりの必要なパフォーマンスがわかれば、必要なコア数を見積もることができます。 P ページを T 時間で処理する必要があるとします。上記より、1 コアが 1 ページを処理するには t 時間必要であることがわかっています。したがって、必要なコア数は N = (P x t ) / T です。 例。ある顧客が 8 時間で 200,000 ページを処理する必要があるとします。これは 28,800 秒です。上記より、1 コアが 1 ページを処理するのに 4.35 秒かかることがわかっています。したがって、必要なコア数は (200,000 x 4.35) / 28,800 = 31 コアです。したがって、8 コアで Hyper-Threading が有効な 2 台の Processing Stations (合計 32 論理コア) があれば、自動処理には十分です。
- ボトルネックの原因となる可能性があるインフラストラクチャ全体の負荷:
-
- FlexiCapture サーバーのハードウェア上の負荷;
-
- ネットワーク上の負荷; または
-
- カスタム処理スクリプトから要求される外部の共有リソース (データベース、外部サービスなど) 上の負荷。
-
- Processing Server が対応できる処理コア数。この数は、1 つのコアがタスクを実行するのに必要な平均時間に左右されます。この時間は、バッチサイズ (ページ数) や実装されているカスタマイズに大きく依存します。通常、1 バッチあたり約 10 ページであれば、Processing Server は 120 個の処理コアに対応できます。ただし、非常に高速なスクリプトを含む多数のカスタムステージを作成したり、1 バッチあたり 1 ページを処理したりすると、タスクの平均時間が大幅に短くなり、その結果、処理コアの最大数がわずかに減少することがあります。
この問題を検出するには、Processing Server の Free Processing Cores カウンターを監視する必要があります。それにもかかわらず、処理待ちのドキュメントのキューがあり、使用中のコア数がある時点で飽和に達して以降ほとんど増えない場合は、ここで説明している状態が発生しています。これを解消するには、次のようにします。
- 可能な場合は、バッチ全体を小さなタスクに分割せずに処理します (Workflow settings ダイアログの Stage Properties を参照) 。
- より大きな単位でページを処理します。1 バッチあたりの平均ページ数を増やす、複数のカスタムステージを 1 つにまとめる、またはカスタマイズを標準ステージに組み込みます。たとえば、そのステージのスクリプト内のルーティングイベントに追加します。
