web-dev-qa-db-ja.com

Azure Functions-並列実行の制限

並行して実行する関数の最大数を制限することはできますか?

私はドキュメントを読んで、これに出会いました:

複数のトリガーイベントがシングルスレッド関数ランタイムが処理できるよりも速く発生する場合、ランタイムは関数を複数回並行して呼び出すことができます。

機能アプリが消費ホスティングプランを使用している場合、機能アプリは自動的にスケールアウトする可能性があります。アプリが消費ホスティングプランまたは通常のApp Serviceホスティングプランで実行されているかどうかにかかわらず、関数アプリの各インスタンスは、複数のスレッドを使用して同時関数呼び出しを並行して処理する場合があります。

各関数アプリインスタンスでの同時関数呼び出しの最大数は、使用されているトリガーの種類と、関数アプリ内の他の関数によって使用されるリソースに応じて異なります。

https://docs.Microsoft.com/en-gb/Azure/azure-functions/functions-reference#parallel-execution

Event Hub入力バインディングを使用してApp Serviceプランで関数を使用していますが、Function App内には1つの関数しかありません。私がそれを制限できない場合、この種のセットアップでの同時関数呼び出しの最大数は誰にもわかりませんか?

20
chris

Event Hubsがトリガーする関数の最大同時実行性を指​​定する方法はありませんが、バッチサイズとフェッチオプションを ここで説明 として制御できます。

同時呼び出しの最大数は、ワークロードとリソースの使用状況によっても異なる場合があります。

並行性の制限が必要な場合、これは(現在)対処する必要があるものであり、以下の投稿で役立つと思われるいくつかのパターンについて説明しています。

Azure Function AppでのAzure Storage Queue処理の調整

Azure Functionsキューの同時ジョブ数の制限

15

参考までに、スロットルの検索でここに出くわしました。関数で[Singleton]属性を使用して、一度に1つの実行のみを保証できます。たぶんあなたが探していたものではなく、非常に厳密な調整方法ではありませんが、それでもオプションです。

https://github.com/Azure/azure-webjobs-sdk/wiki/Singleton

7