28

Azure Functionsのスケーリングに関するドキュメントは、Azure Functionsがアプリのインスタンスを追加するタイミングを決定する方法の詳細については少し軽視しています。

たとえば、Github webhook によってトリガーされる関数があるとします。10,000 人が同時に Github リポジトリにコミットし (マージの競合はありません ;) )、Github は私の関数を非常に短い時間で 10,000 回呼び出します。

何が起こると期待できますか? 具体的には、

  1. Azure Functions は Webhook 呼び出しを調整しますか? つまり、関数アプリの負荷が高い場合、Azure Functions は特定の関数呼び出しを拒否しますか?
  2. Azure Functions は何らかの方法で要求をキューに入れますか? もしそうなら、どこで/どのように?
  3. このシナリオで Azure Functions が作成する関数アプリのインスタンスはいくつですか? リクエストごとに 1 つ (つまり、10,000)、それぞれが並行して実行されますか?
  4. アプリ関数がゼロ インスタンスにスケールダウンされた場合、負荷がなかったために、最初の関数が実行される前に「ウォームアップ タイム」が発生すると予想できますか? だいたいどのくらい?
4

2 に答える 2

25
  1. Azure Functions は Webhook 呼び出しを拒否しませんが、突然の極端な負荷の場合、一部の要求がタイムアウトになることがあります。Web API の場合、ベスト プラクティスとして、クライアントでの再試行を含めてください。
  2. 永続的な場所にキューに入れられることはありません。これらは (実装の詳細) IIS によって管理されます。
  3. (実装の詳細) インスタンスの数は難しい設定ではありません。公開されていない特定の保護が実施されていますが、かなり拡張できるように設計されています。リクエストは複数のインスタンスによって処理されます。
  4. はい。現在、かなり重い (秒単位) ですが、改善に向けて取り組んでいます。パフォーマンスが重要な状況では、カナリアまたはタイマー トリガーを使用して起動状態を維持することをお勧めします。

私は Azure Functions チームの一員です。実装の詳細としてマークした内容は約束ではなく、サービスの進化に伴い変更される可能性があります。透明性を試みるだけです。

于 2016-05-18T23:37:00.720 に答える