ユースケース開発自動化パフォーマンスとトラブルシューティングパフォーマンスのトラブルシューティング

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

自動化のパフォーマンスをトラブルシューティングする

このガイドでは、予期しないパフォーマンスの問題の根本原因を特定し、解決する方法を説明します。このページでは、パフォーマンスの急増によく見られるパターン、体系的な診断プロセス、およびリソース消費を削減するための即時の対処手順を取り上げます。

効率的な自動化を設計し、問題を未然に防ぐためのガイダンスについては、パフォーマンスのベストプラクティスを参照してください。

パフォーマンスの急増によく見られるパターン

以下は、自動化のパフォーマンスの問題を特定し、診断するのに役立つ一般的なパターンです。

パターン1:頻繁に更新されるオブジェクトに対するアクティブな自動化

症状: 自動化が短期間に何度も実行され、予期しないリソース消費が発生します。たとえば、オブジェクトの更新が大量に発生する自動化では、自動化の実行が多数発生し、それぞれが下流の効果をトリガーする可能性があります。

根本原因: オブジェクトタイプが非常に頻繁に更新され、自動化に「オブジェクト更新時」の条件が設定されているものの、時間ベースの制限がありません。これは、一時停止されていた自動化を再開したときによく発生します。

修正方法:

  1. 自動化を直ちに一時停止し、それ以上の実行を止めます。
  2. 適切な間隔の時間ベースの条件を追加し、実行頻度に上限を設けます。
  3. 単一実行モードが有効になっていることを確認します。
  4. 自動化を再開し、その後1日間は実行回数を注意深く監視します。

パターン2:連鎖する自動化が雪だるま式に増加する

症状: 複数の自動化が順番に実行され、実行回数が指数関数的に増加します。

根本原因: 自動化が連鎖し、それぞれの自動化がオブジェクトを編集することで、次の自動化をトリガーします。

  • 自動化 A がオブジェクトを編集します
  • これらの編集が自動化 B をトリガーし、自動化 B がオブジェクトを個別に処理します
  • 自動化 B がさらにオブジェクトを編集し、自動化 C をトリガーします
  • この乗算的な効果によって、最初の更新から実行回数が指数関数的に増加する可能性があります

修正方法:

  1. 連鎖内の下流の自動化をすべて一時停止します。
  2. ロジックをより少数の自動化に統合できるか評価します。
  3. 残す自動化では、一括処理(ObjectSet 入力と単一実行モード)を使用するようにしてください。
  4. 自動化を1つずつ再度有効にし、そのたびに実行回数を監視します。

パターン3:非効率な関数の操作

症状: 関数の実行時間が長く、オブジェクトの件数が増えるにつれてリソース消費が著しく増加します。

根本原因: 関数に、オブジェクトを一括処理する代わりに、反復ごとにオントロジーを1回クエリするループが含まれています。

修正方法:

  1. 関数コードを確認し、内部にオントロジークエリがあるループを探します。
  2. 必要なオブジェクトをすべて事前に読み込むか、バックエンドの集計を使用するようにリファクタリングします。
  3. 可能であれば、個別のオブジェクトではなく ObjectSet を受け取るようにアクションの入力を変更します。

関数の最適化に関する包括的なガイダンスについては、関数のパフォーマンスを最適化するを参照してください。

パターン4:関数の自己呼び出しループ

症状: 1つの関数が何度も呼び出され、多くの場合、再帰的に呼び出されます。

根本原因: 関数がオブジェクトを編集し、その編集が同じ関数を呼び出す自動化をトリガーすることで、ループが発生します。防止策がなければ、手動で停止するまで続く可能性があります。

修正方法:

  1. オブジェクトにステータスフラグまたはタイムスタンプを追加し、再処理を防ぎます。
  2. 編集前に処理が必要かどうかを確認する条件付きロジックを追加します。
  3. ロジックを Automate の外部に完全に移すべきか検討します。

診断プロセス

パフォーマンスの急増を調査するには、次の手順に従います。

  1. 自動化の実行履歴を確認する: 自動化を開き、実行履歴を確認します。主な確認事項は次のとおりです。

    • 過去1日間に何回実行されましたか?
    • 実行回数の急増はいつ始まりましたか?
    • 時間の経過とともに頻度が増加していますか?
  2. 条件が満たされる頻度を特定する: 条件の設定とオブジェクトの更新パターンを調べます。主な確認事項は次のとおりです。

    • 条件を満たすオブジェクトはどのくらいの頻度で更新されていますか?
    • 時間ベースの条件は設定されていますか?設定されている場合、その間隔はどのくらいですか?
    • 更新は想定よりも頻繁に発生していますか?
  3. 自動化の連鎖を追跡する: Autopilot または Workflow Lineage を使用して、依存関係を把握します。主な確認事項は次のとおりです。

    • どの自動化がほかの自動化をトリガーしていますか?
    • 効果の連鎖の全体像はどのようになっていますか?
    • 1回の実行が何倍にも増える、雪だるま式の増加が発生する可能性はありますか?
  4. 関数の実装を確認する: 自動化が呼び出す関数を調べます。主な調査事項は次のとおりです。

    • 関数に、オントロジークエリを含むループはありますか?
    • 一括処理パターンは正しく使用されていますか?
    • 関数の実行時間と外部呼び出し回数を確認します。
  5. 再帰を引き起こす条件を探す: 自動化が自分自身をトリガーしているかどうかを特定します。主な確認事項は次のとおりです。

    • 関数がオブジェクトを編集することで、同じ自動化の条件が再び満たされますか?
    • 再帰的な処理を防ぐステータスフラグや防止策はありますか?
    • 実行履歴に、短い間隔で繰り返される呼び出しが表示されていますか?

即時の対処手順

パフォーマンスまたはリソース消費の急増が見つかった場合は、次の対応を優先順位順に行います。

  1. 被害の拡大を止める

    • 急増の原因となっている自動化を直ちに一時停止します。これにより、調査中のさらなるリソース消費を防ぎます。
  2. 影響を評価する

    • Resource Management を確認し、リソースへの影響全体を把握します。
    • 同様に一時停止が必要な可能性のある下流の自動化を特定します。
    • 問題がいつまでさかのぼるかを特定します。
  3. 応急処置を適用する

    • 時間ベースの条件がない場合は追加します。
    • 実行モードが複数実行に設定されている場合は、単一実行に変更します。
    • 関数に条件付きロジックを追加し、不要な処理をスキップします。
  4. 回復状況を監視する

    • 頻度を下げるか対象範囲を制限して、自動化を再開します。
    • その後1日間は実行回数を注意深く監視します。
    • リソース消費が想定どおりの水準に戻ったことを確認します。

ツールとリソース

診断情報を得るためのリソースを以下に示します。

実行履歴とコストの内訳

  • Automate の実行履歴: 実行回数、実行時刻、および成功または失敗のステータスを表示します
  • 関数ログ: エラーメッセージと実行時間の詳細が含まれます
  • Ontology Manager: クエリコストを表示しますが、即時のトラブルシューティングにはあまり役立ちません
  • Resource Management: サービスとリソースの種類ごとの全体的なコストの内訳を提供します

自動化ワークフローの概要

  • Autopilot: 大規模な自動化ワークフローを管理および監視するためのコントロールセンターです
  • Workflow Lineage: 自動化の依存関係と連鎖を可視化します