エッジ制御ファイル転送
Axeda Agent/プラットフォームによって開始されたファイルアップロード
図に示すように、
• ステップ 2 で、次の入力検証が実行されます。
◦ ジョブがエッジ制御の場合、同時転送の最大数および Thing 当りの同時転送の最大数を超過しているか検証されます。
◦ 超過していない場合、ジョブは後で転送するためにキューに入れられます。超過している場合、コピーは失敗し、ジョブはキューに入れられません。
• ステップ 5 のエグレス中:
◦ 実行するダウンロード、アップロード、SCM 操作、リモートプロパティ書き込み操作があるかどうかを判別します。
◦ ファイル転送は、転送の制限を超えていない場合にのみ開始できます。
• ステップ 8 のバイナリファイルの作成中またはバイナリファイルへの書き込み中は、ファイルの書き込みはロックされます。最後のチャンクが処理され、Checksum が提供されている場合、これが検証されます。
• ジョブを失敗または完了としてマークします。さらに、Checksum が提供されている場合、これを検証します。
ThingWorx Platform によって開始されたファイルダウンロード
図に示すように、
• ステップ 1 のファイルコピー中に、次の入力検証が実行されます。
◦ ジョブがエッジ制御の場合、同時転送の最大数および Thing 当りの同時転送の最大数を超過しているか検証されます。
◦ 超過していない場合、ジョブは後で転送するためにキューに入れられます。超過している場合、コピーは失敗し、ジョブはキューに入れられません。
• ステップ 4 のエグレス中、
◦ 実行するダウンロード/アップロード/SCM 操作/リモートプロパティ書き込み操作があるかどうかを判別します。
◦ ファイル転送は、転送の制限を超えていない場合にのみ開始できます。
• バイナリファイルの作成中またはバイナリファイルへの書き込み中 (ステップ 7)、ファイルの読み取りはロックされます。
• その結果、ジョブが失敗または完了としてマークされます。
重要な調整可能パラメータ
• ファイル転送サブシステムのコンフィギュレーション設定は、ファイル転送の高い同時実行性を実現するために慎重に調整する必要があります。いくつかの設定を以下に示します。詳細については、
ファイル転送サブシステムを参照してください。
◦ 許可されているエッジ制御ファイル転送の最大数→ジョブをキューから取り出してアクティブなキューに移動するために、プラットフォームで実行可能な並列ファイル転送の最大数。さらなる並列処理が必要な場合、この値を大きくする必要があります。
◦ 1 つの Thing に許可されているエッジ制御ファイル転送の最大数→ジョブをキューから取り出してアクティブなキューに移動するために、プラットフォームで実行可能な Thing 1 つ当りの並列ファイル転送の最大数。Thing の数は少ないが、Thing 1 つ当りの転送ファイル数が多い場合、これを大きくすると便利です。
| この値を大きくすると、デバイス間の並列ファイル転送の最大数から使用可能な位置が不均等分配されます。 |
◦ オフラインキューで許可する最大ファイル転送数→ファイル転送のアップロード速度が非常に高く、処理が比較的遅い場合、ジョブが却下されずにオフラインジョブに留まるには、この値を大きくする必要があります。
◦ オフラインキューで 1 つの Thing に許可する最大ファイル転送数→Thing 1 つ当りのファイル転送のアップロード速度が非常に高く、処理が比較的遅い場合、この値を大きくする必要があります。その結果、ジョブは却下されずにオフラインジョブに留まります。
• エッジ制御ファイル転送は
WSExecutionProcessor スレッドプールを使用して実行されます。したがって、ファイル転送が行われるためには十分なスレッドが必要です。
WSExecutionProcessingSubsystem の
「実行プロセッサの設定」を使用して、このスレッドプールを調整します。詳細については、
WebSocket 実行処理サブシステムを参照してください。
• /Metrics エンドポイントで公開されている各種判定基準を調べることでファイル転送統計を監視できます。ファイル転送の判定基準の詳細については、
ThingWorx サブシステムの監視を参照してください。
ベストプラクティス
• ThingWorx Platform では、ファイルリポジトリ内のファイルの同時読み書きがサポートされています。データの破損を防ぎ、一貫性を確保するために、Platform は読み取り/書き込み操作の間、ファイルとディレクトリをロックする必要があります。同じディレクトリまたはファイルに同時に書き込まないようにすることで、同時実行性が向上し、ファイル操作のスループットが向上します。
• 大量のファイル転送を行うためには、ファイル入力/出力は同時読み取り/書き込み操作を処理可能で /ThingworxPlatform とは別のストレージに配置されている必要があります。
• ファイル転送のパフォーマンスを継続的に監視します。ファイル判定基準のドキュメンテーションを参照してください。
• ファイル転送イベントの完了に関連する大量の入力/出力を伴うサービス実行では、操作を高速で実行するための限られた TWEventProcessor スレッドが使用されるので、アプリケーション開発者は、ThingWorx の購読とファイル転送操作の関係に注意を払う必要があります。TWEventProcessor スレッドプールの設定を適宜調整し、ほかの購読実行のパフォーマンスが影響を受けないようにインフラストラクチャのパフォーマンスを確保します。