この記事では、Azure Load Testing を使用して、Azure Functions をパフォーマンスとコストに合わせて最適化する方法について説明します。 Azure Functions Flex 従量課金プランにより、柔軟性が実現し、プライベート ネットワーク、高速かつ大規模なスケールアウト機能、サーバーレス モデルに基づくインスタンス メモリ サイズの選択などのカスタム機能が利用できるようになります。
Azure Load Testing パフォーマンス オプティマイザー ツールを使用すると、さまざまな Functions 構成でロード テストを実行し、アプリに適した構成を決定することができます。 このツールは、パフォーマンスとコストに対するさまざまな構成の影響を把握し、情報に基づく意思決定を行うのに役立ちます。
パフォーマンス オプティマイザーにより、次の機能が実現します。
- コンカレント テスト: 想定される負荷で、さまざまなメモリおよび HTTP コンカレンシー構成を指定することで、テストをすばやく作成して実行できるコンテキスト内エクスペリエンスです。
- 対照比較: スケールとコンカレンシー構成全体のロード テスト結果から、パフォーマンス メトリックを評価し、適切な構成を選択できるようにします。
- メトリック: パフォーマンス メトリックに基づいてサイズ設定を適切に行い、コストを最適化します。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。 Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。
HTTP トリガーがある関数を少なくとも 1 つ含む Flex 従量課金プランの関数アプリ。 関数アプリを作成する必要がある場合は、「Flex 従量課金プランの関数アプリを作成および管理する」を参照してください。
テスト プロファイルを実行するには、Azure アカウントに、アプリに対する次のアクセス許可が必要です。
- Microsoft.Web/sites/read
- Microsoft.Web/sites/write
- Microsoft.Web/sites/slots/read
- Microsoft.Web/sites/slots/write。既定では、これらのアクセス許可は、Web サイト共同作成者ロールに既に含まれます。
Azure Functions でのパフォーマンス オプティマイザーの実行
パフォーマンス オプティマイザーを使用すると、さまざまな構成をテストでき、パフォーマンスとコストの適切なバランスを見つけるのに役立ちます。 たとえば、Functions アプリのインスタンス サイズや HTTP コンカレンシー量などのメトリックをテストできます。 パフォーマンス オプティマイザーでは Azure Load Testing が使用され、パフォーマンスとスケーラビリティに合った最適なアプリ構成を特定することができます。 HTTP トリガーを使用して、関数でパフォーマンス オプティマイザーを実行できます。 Azure Functions にコードをデプロイしたら、次の手順に従ってオプティマイザーを実行します。
Azure portal にサインインします。
Flex 従量課金プランでホストされている Functions アプリに移動します。
アプリの [パフォーマンス] セクションで、[パフォーマンス オプティマイザー] を選択します。
サブスクリプションに Azure Load Testing リソースがない場合は、[Load Testing リソースの作成] を選択して作成します。
テスト プロファイルを作成する
テスト プロファイルには、関数アプリの構成、要求の詳細、負荷の構成が記述されています。 Functions アプリの構成ごとに、指定された負荷でロード テストが実行されます。 テスト プロファイルを作成するには、次の手順を実行します。
[テスト プロファイルの作成] を選択して、新しいテスト プロファイルを作成します。
[プロファイルの構成] タブで、まず、テストの詳細を入力します。
フィールド 説明 ロード テスト リソース ロード テスト リソースを選択します。 テスト プロファイル名 一意のテスト プロファイル名を入力します。 テスト プロファイルの説明 (省略可能) テスト プロファイルの説明を入力します。 作成後にテストを実行する 選択すると、テストの作成後にテスト プロファイルが自動的に開始されます。 [Functions の構成] セクションで、テストする Functions アプリの構成を選択します。 インスタンスのメモリ サイズと HTTP コンカレンシーを選択できます。 最大 10 個のメモリとコンカレンシーの組み合わせを選択できます。
Note
テスト プロファイルの実行が開始されると、構成の変更がアプリに直接行われます。 Function アプリは、指定された組み合わせごとに再起動され、アプリに対してロード テストが実行されます。
[要求の詳細] セクションで、関数アプリの要求の詳細を入力します。 要求メソッド、URL、およびヘッダーを指定できます。
[要求の追加] を選択して、ロード テストに HTTP 要求を追加します。
[要求の追加] ページで、要求の詳細を入力ます。
フィールド 説明 要求の名前 要求を識別するためのロード テスト内の一意の名前。 この要求名は、テスト条件を定義する場合に使用できます。 関数名 テストする関数を選びます Key 関数にアクセスするために必要なキーを選びます HTTP メソッド 一覧から HTTP メソッドを選択します。 Azure Load Testing では、GET、POST、PUT、DELETE、PATCH、HEAD、および OPTIONS がサポートされています。 クエリ パラメーター (省略可能) URL に追加するクエリ文字列パラメーターを入力します。 ヘッダー (省略可能) HTTP 要求に含める HTTP ヘッダーを入力します。 本文 (省略可能) HTTP メソッドに応じて、HTTP 本文の内容を指定できます。 Azure Load Testing では、生データ、JSON ビュー、JavaScript、HTML、XML の形式がサポートされています。 [ロード構成] タブを選択して、ロード テストのロード パラメーターを構成します。
フィールド 説明 [Engine instances](エンジン インスタンス) ロード テスト エンジン インスタンスの数を入力します。 ロード テストは、すべてのエンジン インスタンスで並列に実行されます。 ロード パターン 仮想ユーザーの目標数まで増加するためのロード パターン (線形、ステップ、スパイク) を選択します。 エンジンあたりの同時ユーザー数 各テスト エンジンでシミュレートする仮想ユーザーの数を入力します。 ロード テストの仮想ユーザーの合計数は、(テスト エンジンの数) * (エンジンあたりのユーザー数) です。 テスト期間 (分) ロード テストの期間を分単位で入力します。 ランプアップ時間 (分) ロード テストのランプアップ時間を分単位で入力します。 ランプアップ時間は、仮想ユーザーの目標数に達するまでにかかる時間です。 Functions アプリにパブリックにアクセスできない場合は、必要に応じて、ネットワーク設定を構成します。
プライベートでホストされるエンドポイントのロード テストの詳細について説明します。
[確認および作成] を選択して、テスト プロファイルの構成を確認します。
[作成] を選択して、テスト プロファイルを作成します。 これで、Azure Load Testing によってテスト プロファイルが作成されました。
以前に [作成後にテストを実行する] を選択した場合、テスト プロファイルは自動的に開始されます。
テスト プロファイルの実行が完了すると、Functions アプリは元の構成に戻されます。
結果の表示
テスト プロファイルの実行が完了したら、Azure portal で結果を表示できます。 テスト プロファイルの実行には、Functions アプリの構成ごとにロード テストの実行が含まれています。 結果には、関数アプリの構成ごとに、応答時間、スループット、エラー率などのパフォーマンス メトリックが含まれています。 さまざまな構成のパフォーマンス メトリックを比較し、アプリに適した構成を選択できます。 最適な構成を決定したら、[適用] を選択して、スケールとコンカレンシーの設定を Functions アプリに適用します。
次のステップ
- Azure Functions のロード テストの詳細を確認します。
- サーバー側のアプリケーション メトリックを監視する方法を確認します。