同時ファンクション実行のメモリー使用量および可用性の監視

OCI Functionsによる同時ファンクション実行のメモリーの使用状況および可用性を監視する方法をご覧ください。

OCI Functionsには、リージョン内のすべてのファンクションの同時実行に使用できるメモリーの合計量に対する制限があります。この制限には、total-concurrency-mbという名前が付けられ、同時ファンクション実行に割り当てられるメモリーの最大量が指定されます。

「関数の制限」に示すように、total-concurrency-mbメモリー制限にはデフォルト値があります。メモリー容量を超過したときに以前にログに記録されたサポート・リクエストに応答して、テナンシでデフォルト値がすでに増加している可能性があります。

コンソールを使用して、リージョン内の合計concurrency-mbメモリー制限の現在の値を確認できます(同時ファンクション実行の現在のメモリー制限の表示を参照)。

total-concurrency-mbメモリー制限に達すると、関数の呼出しに応答してHTTP-429エラーが返されます。OCI Functionsで同時ファンクションの実行により多くのメモリーが必要であることがわかると、concurrency-mbメモリーの合計制限を増やすリクエストを送信できます(サービス制限の引上げのリクエストを参照)。

合計concurrency-mbメモリー制限に達するのを待ってから、その要件に対処するかわりに、Oracle Cloud Infrastructure MonitoringとAllocatedTotalConcurrencyメトリックを使用して、同時ファンクション実行に使用可能なメモリーの割り当て量を監視できます。AllocatedTotalConcurrencyメトリックの値は、割り当てられたメモリーの量であることに注意してください。同時ファンクションの実行に実際に使用されるメモリーの量は、常にAllocatedTotalConcurrencyメトリックの値以下です。詳細は、「同時ファンクション実行用に最近割り当てられたメモリー量の表示」を参照してください。

AllocatedTotalConcurrencyメトリックを使用して、同時ファンクション実行メモリー割当てが定義したしきい値を超えた場合に通知するアラームを作成することもできます。詳細は、「同時ファンクション実行メモリー割当てしきい値アラームの作成」を参照してください。

同時ファンクション実行の現在のメモリー制限の表示

同時ファンクション実行の現在のメモリー制限を表示するには:

  1. ナビゲーション・メニューを開き、「ガバナンスと管理」をクリックします。「テナンシ管理」で、「制限、割当ておよび使用状況」をクリックします。

  2. 「サービス」リストから「ファンクション」を選択します。
  3. 「範囲」リストからリージョンを選択します。

  4. 「コンパートメント」リストからルート・コンパートメントを選択します。

    total-concurrency-mb制限は、同時ファンクション実行の現在のメモリー制限を示します。

  5. (オプション)同時ファンクション実行用の追加メモリーをリクエストするには、total-concurrency-mb制限の横にある「アクション」メニュー(アクション・メニュー)をクリックし、「サポート・リクエストを開く」を選択して、指示に従います。

同時ファンクションの実行に最近割り当てられたメモリー量の表示

同時ファンクション実行に最近割り当てられたメモリー量を表示するには:

  1. ナビゲーション・メニューを開き、「監視および管理」.をクリックします「モニタリング」で、「メトリック・エクスプローラ」をクリックします。

  2. 「開始時間」および「終了時間」フィールドを使用して、分析する代表的な期間を指定します。
  3. 「問合せ1」パネルで、次のように問合せを作成します。
    1. 「コンパートメント」で、ルート・コンパートメントを選択します。
    2. 「メトリック・ネームスペース」で、oci_faasを選択します。
    3. 「拡張モード」オプションを選択し、問合せコード・エディタで次のいずれかの問合せを入力します。
      • テナンシ内のすべてのファンクションの同時ファンクション実行に割り当てられるメモリーの合計量を1分間隔で表示するには、指定した期間に次の問合せを入力します:
        AllocatedTotalConcurrency[1m].groupBy(resourceId).max().grouping().sum()
      • 1分間隔で単一のアプリケーション内のすべての関数の同時実行に割り当てられたメモリーの合計量を表示するには、指定した期間に次のクエリーを入力します。
        AllocatedTotalConcurrency[1m]{resourceId = "<application-OCID>"}.max()

        <application-OCID>は、アプリケーションのOCIDです。例:

        AllocatedTotalConcurrency[1m]{resourceId = "ocid1.fnapp.oc1.phx.aaaaaaaaaf______r3ca"}.max()
  4. 「チャートの更新」をクリックします

    チャートは、選択した期間中に、同時ファンクション実行に割り当てられていたメモリーの量を更新して表示します。

同時ファンクション実行メモリー割当てしきい値アラームの作成

コンカレント関数実行メモリー割当てが定義したしきい値を超えた場合に起動するアラームを作成するには:

  1. ナビゲーション・メニューを開き、「監視および管理」.をクリックします「モニタリング」で、「アラーム定義」をクリックします。

  2. 「アラームの作成」をクリックします。
  3. 「アラーム名」に、アラームのわかりやすい名前を入力します。機密情報の入力は避けてください。
  4. 「拡張モードに切替え」オプションを選択します。
  5. 「メトリック詳細」領域で、アラームを評価するメトリックを次のように指定します:
    1. 「コンパートメント」で、ルート・コンパートメントを選択します。
    2. 「メトリック・ネームスペース」で、oci_faasを選択します。
  6. 「トリガー・ルール」領域で、アラームを起動するために満たす必要がある条件を指定します:
    • トリガー遅延分数:アラームを起動するために条件を維持する必要がある分数を入力します。
    • アラームの重大度:アラームが起動したという通知に指定する重要度を選択します。
    • 問合せコード・エディタ:次のように、問合せを入力して、満たされるとアラームが起動する条件を定義します。

      • テナンシ内のすべてのファンクションに対する同時ファンクション実行のメモリー割当てが一定量を超えた場合にアラームを起動する場合は、次の問合せを入力します:
        AllocatedTotalConcurrency[1m].groupBy(resourceId).max().grouping().sum() > <memory-threshold>

        <memory-threshold>は、しきい値として使用するメモリー量(MiB)で、この値を超えるとアラームが起動します。

        たとえば、同時ファンクションの実行に割り当てられたメモリー量が、同時ファンクションの実行に使用できる合計メモリーの70%を超えた場合にアラームを起動できます。同時ファンクション実行の合計メモリーが60 GB (つまり、61,440 MiB)の場合は、次の問合せを入力します。

        AllocatedTotalConcurrency[1m].groupBy(resourceId).max().grouping().sum() > 43008
      • 1つのアプリケーション内のすべてのファンクションに対する同時ファンクション実行のメモリー割当てが一定量を超えた場合にアラームを起動する場合は、次の問合せを入力します。
        AllocatedTotalConcurrency[1m]{resourceId = "<application-OCID>"}.max() > <memory-threshold>

        ここでは:

        • <application-OCID>は、アプリケーションのOCIDです
        • <memory-threshold>は、しきい値として使用するメモリー量(MiB)で、この値を超えるとアラームが起動します。

        たとえば、単一のアプリケーション内のすべての関数に対して同時実行関数実行に割り当てられたメモリー量が、同時実行関数実行に使用できる合計メモリーの10%を超えた場合に、アラームを起動できます。同時ファンクションの実行に使用できる合計メモリーが60 GB (つまり、61,440 MiB)の場合は、次の問合せを入力します。

        AllocatedTotalConcurrency[1m]{resourceId = "ocid1.fnapp.oc1.phx.aaaaaaaaaf______r3ca"}.max() > 6144
  7. 「基本モードに切替え」オプションを選択します。
  8. 「アラーム通知の定義」領域で:
    1. 「宛先」で、アラームの起動時に通知を送信する場所を指定します:
      • 宛先サービス:「通知」を選択します。
      • コンパートメント: アラームによって評価されたメトリックを示すリソースが含まれているコンパートメントを選択します。選択したコンパートメントはアラームの格納場所でもあります。
      • トピック: 通知に使用するトピック。各トピックでは、PagerDutyなどの1つ以上のサブスクリプション・プロトコルがサポートされます。適切なトピックがまだ存在しない場合は、「トピックの作成」をクリックし、新しいトピックを定義します。詳細は、基本アラームの作成を参照してください。
    2. 「メッセージのグループ化」で、次のオプションのいずれかを選択します:
      • メトリック・ストリーム全体で通知をグループ化: すべてのメトリック・ストリームのメトリック・ステータスをまとめてトラッキングします。すべてのメトリック・ストリームのメトリック・ステータスが変更されたときにメッセージを送信します。
      • メトリック・ストリームごとに通知を分割: メトリック・ストリームごとにメトリック・ステータスを個別にトラッキングします。各メトリック・ストリームのメトリック・ステータスが変更されたときにメッセージを送信します。例については、シナリオ: メトリック・ストリームによるメッセージの分割を参照してください。
    3. 「メッセージ・フォーマット」で、次のオプションのいずれかを選択します:
      • 書式設定されたメッセージの送信: 簡易でわかりやすいレイアウト。書式設定されたメッセージ(RAW以外のオプション)に対してサポートされているサブスクリプション・プロトコルとメッセージ・タイプを確認するには、わかりやすい書式設定を参照してください。
      • 整形されたJSONメッセージ(改行されたRawテキスト)の送信: 改行とインデントを使用したJSON。
      • RAWメッセージの送信: RAW JSONブロブ。
    4. 指定した期間の評価および通知を抑制するには、「通知の抑制」を選択します。このオプションは、システム・メンテナンス期間中のアラーム通知の回避に役立ちます。開始時間、終了時間およびオプションの説明を指定します。アラームのベスト・プラクティスおよびアラームの抑制を参照してください。
    5. メトリック・データの評価を開始せずにアラームを保存するには、「このアラームを有効にしますか。」チェック・ボックスの選択を解除します。
  9. 「アラームの保存」をクリックします。