12

Azure 関数を使用してスケーリングがどのように機能するかを理解しようとしています。ストレージ キューに 88 個のメッセージを生成するアプリでテストしており、これにより関数がトリガーされます。関数は c# で記述されています。この関数はファイルをダウンロードし、そのファイルに対して何らかの処理を実行します (最終的にはポストバックしますが、テスト目的ではまだ行っていません)。この関数は、リクエストごとに完了するまでに約 30 秒かかります (合計約 2500 秒の処理)。テスト目的で、これを 10 回ループします。

私たちの理想的な状況は、ある程度のウォームアップの後、Azure が関数を自動的にスケールアップして、最も適切な方法でメッセージを処理することです。スピンアップ時間などを考慮して、ある種のアルゴリズムを使用します。または、何らかの上限を使用して、バックログ内のメッセージ数までスケールアップします。

これはどのように機能するはずですか?「消費単位」が 7 を超えたことは一度もありません。通常、メッセージのキューを処理するには約 45 分かかります。

再スケーラビリティに関する他のいくつかの質問... 私たちの関数はメモリ集約型の操作です。メモリは関数のスケーリングされたインスタンス間でどのように「共有」されますか? 通常は見られないメモリ不足エラーが発生しているため、お尋ねします。関数の最大メモリ (1536MB) を構成しました。操作の約 2.5% がメモリ不足エラーで失敗している

事前に感謝します。EC2 上の専用の Windows VM から Azure 関数に多くの作業を移動できるようになるため、これをうまく機能させたいと考えています。

4

1 に答える 1

22

その意図は、関数アプリに割り当てられた"消費ユニット" (インスタンスと呼ばれることもある) の数を考えたり気にしたりする必要がないという最終的な目標を持って、プラットフォームが自動的にスケーリングを処理することです。とはいえ、大多数のユーザーに適切に対応できるようにするには、常に改善の余地があります。:)

しかし、内部の詳細 (キューの処理に関する限り) に関するあなたの質問に答えるために、私たちが現在実施しているのは、アプリによって処理される前にキューの長さ各メッセージがキューに留まっている時間を調べるシステムです。 . 関数アプリがこれらのメッセージの処理で "遅れている" と思われる場合は、アプリが受信負荷に追いつくことができると判断されるまで、消費単位が追加されます。

言及すべき非常に重要なことの 1 つは、消費単位の数だけでなく、スケールの別の側面があるということです。各コンシューム ユニットには、多くのメッセージを並行して処理する機能があります。多くの場合、人々が抱えている問題は、割り当てられた消費ユニットの数ではなく、ワークロードのデフォルトの同時実行構成です。host.json ファイルで調整できるbatchSizeおよびnewBatchThreshold設定を見てください。ワークロードによっては、これらの値を変更するとスループットが大幅に向上することがあります (場合によっては、並行性により、スループットが劇的に向上することが示されています)。たとえば、関数の実行ごとに大量のメモリが必要な場合や、関数が限定された同時アクセスしか処理できない外部リソース (データベースなど) に依存している場合に、この問題が発生することがあります。これらの同時実行制御に関するその他のドキュメントは、https ://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json にあります。

上でほのめかしたように、消費単位ごとの同時実行性を試してみると、これまでに発生したメモリ不足の問題を解決できる可能性があります。各消費単位には、独自のメモリ プールがあります (たとえば、独自の 1.5 GB)。ただし、1 つの消費単位で処理するメッセージが多すぎる場合は、それがメモリ不足エラーの原因である可能性があります。

以上のことから、キューからメッセージの山を排出する、ストレージ コンテナー内の BLOB の「ストリーム」を消費する、データを処理するなど、最も一般的であると思われる特定の負荷シナリオを特定して最適化する作業を常に行っています。私たちが学び、成熟し、あなたのような人々からより多くのフィードバックを得るにつれて、物事が変化することを期待してください. このようなフィードバックを製品グループに提供するのに最適な場所は、定期的にレビューされるGitHub リポジトリの問題リストです。

ご質問ありがとうございます。この情報がお役に立てば幸いです。また、お探しの数値を取得できることを願っています。

于 2016-06-08T20:18:04.607 に答える