2

私は関数のCPU性能をテストしているので、数値の中の素数を見つける関数を作った。これはAzureサービスバスによって起動されます。 私のローカルマシンでは350msで実行されます。Azure関数が遅い

この機能は、消費計画で実行すると約1000msかかる。 私はバッチを100個のメッセージを関数に送信すると、約16個のインスタンスにスケールアップしますが、各関数のパフォーマンスは3000-7000msに大幅に低下します。

4コアの標準サービスプランを試してみると、パフォーマンスは向上しますが、あまり効果はありません。それはまだ私のラップトップよりかなり遅いです。 ここにいる人はsimilar issueです。

これは機能から期待されるパフォーマンス/スケーリングですか? E.q。 CPU集中型のバッチ処理にはあまり適していませんか?

Azureバッチは、より適切にフィットしますか?

答えて

1

関数が実行されているハードウェアの正確な仕様はわかりませんが、消費計画の各インスタンスがロープロファイルのシングルコアVMであると想定できます。 CPU集約的なレイテンシクリティカルなワークロードを実行する必要がある場合は、おそらくそれほど良いものではありません。

あなたのローカルマシンはおそらくそれらのインスタンスより速いので、350ms対1000msの違いがあります。

3000-7000msの減少は、同じインスタンスで同時に複数の関数の実行が実行されていることに関連しています。彼らはCPUのために競争しており、お互いの速度を落としています。純粋なCPUバインドワークロードの場合は、"maxConcurrentCalls": 1host.jsonに設定する方がよい場合があります。