2016-05-18 13 views
16

scaling documentation for Azure Functionsは、アプリのインスタンスをいつ追加するかAzureの機能がどのように決定するかについて、少し詳しく説明しています。Azure関数はどのようにスケールアウトされますか?

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

どうすればいいですか?具体的には、

  1. Azure関数はWebhookコールを抑制しますか?つまり、機能アプリの負荷が高い場合、Azure関数は特定の関数呼び出しを拒否しますか?
  2. Azure関数は何らかの理由でリクエストをキューに入れますか?もしそうなら、/ how?
  3. このシナリオでAzure関数が作成する関数アプリケーションのインスタンスの数はいくつですか?リクエストごとに1つ(10,000)、それぞれが並行して実行されますか?
  4. 私のapp関数がゼロインスタンスにスケールダウンされている場合、そのインスタンスに負荷がかからないため、最初の関数が実行される前に「ウォームアップ時間」が発生することがありますか?おおよそどのくらい?

答えて

17
  1. Azureの機能は、ウェブフックコールを拒否しませんが、突然、極端な負荷の場合には、いくつかの要求がタイムアウトすることがあります。ウェブAPIの場合は、ベストプラクティスとしてクライアントに再試行してください。
  2. 永続的な場所にはキューされません。 IISによって管理される(実装の詳細)。
  3. (実装の詳細)インスタンスの数は難しい設定ではありません。私たちは特定の公開されていない保護を提供していますが、私たちはかなり遠くまで拡張するように設計されています。リクエストは複数のインスタンスによって処理されます。
  4. はい。今はかなり重いです(秒)が、それを改善するために取り組んでいきます。敏感な状況では、カナリーや目を覚ましておくためのタイマートリガーが推奨されます。

私はAzure関数チームのメンバーです。実装の詳細としてマークしたことは約束ではなく、サービスを進化させるにつれて変わる可能性があります。透明性の試み。

+0

あなたはタイマ・トリガ・ソリューションを拡張できますか?私は別のタイマーが機能アプリの機能をトリガーしていて、HTTPを保​​つために、それに依存することができた機能をトリガー'warm'? – Shrulik

+1

同じ機能アプリケーションでタイマートリガーのような別の機能があると、別の実行のために暖かいインスタンスを保ちます。今日は、はい。 –

+0

"今日"は心配ですが、正直なところです。 – Shrulik

2
  1. が今日テストされました。それは秒以上かかりました:(
ACTUAL PERFORMANCE 
-------------- 
ClientConnected: 13:58:41.589 

ClientBeginRequest: 13:58:41.592 

GotRequestHeaders: 13:58:41.592 

ClientDoneRequest: 13:58:41.592 

Determine Gateway: 0ms 

DNS Lookup:  65ms 

TCP/IP Connect: 40ms 

HTTPS Handshake: 114ms 

ServerConnected: 13:58:41.703 

FiddlerBeginRequest: 13:58:41.816 

ServerGotRequest: 13:58:41.817 

ServerBeginResponse: 14:00:36.790 

GotResponseHeaders: 14:00:36.790 

ServerDoneResponse: 14:00:36.790 

ClientBeginResponse: 14:00:36.790 

ClientDoneResponse: 14:00:36.790 


Overall Elapsed: **0:01:55.198** 
関連する問題