注記
次のガイドラインの一部は、Windows アプリ Service または Linux App Service でのみ機能する場合があります。 たとえば、Linux App Service は既定で 64 ビット モードで実行されます。
概要
この記事では、Azure App Serviceの Web アプリ機能のアプリケーション パフォーマンスの問題に関してよく寄せられる質問 (FAQ) に回答します。
各種 App Service プランのクォータと制限に関する詳細情報はどこで得られますか?
クォータと制限については、「App Service の制限」を参照してください。
すべての Web アプリが停止されている場合でも、App Service プランに CPU またはメモリ使用量が表示される
App Service には、セキュリティ更新プログラム、SCM (Kudu) コンソールの可用性、アプリケーションの監視、認証、その他の多くの Web アプリ機能など、いくつかのプラットフォームの操作と機能を処理する継続的なシステム プロセスが必要です。
実行中の Web アプリがない場合や、App Service プランに Web アプリがまったく含まれていない場合でも、システム プロセスは App Service プラン上で実行されます。
プラットフォーム プロセスは、最小限のリソース (CPU、メモリ、ディスク領域など) を消費するため、App Service プランの容量計画、監視、自動スケーリング トリガーの構成中に、これらのリソースを考慮する必要があります。
アプリのパフォーマンスが遅い
アプリの低速なパフォーマンスには複数の要因が関与している可能性があります。 詳細なトラブルシューティング手順については、「Troubleshoot slow web app performance (Web アプリの低速なパフォーマンスのトラブルシューティング)」を参照してください。
ヒント
- [構成]>]\(一般\) 設定で Always On 設定を有効にして、アプリをウォームに保ち、コールド スタートを回避します。 この設定は、特に Basic 以降のプランでは、アイドル時間後の遅延を減らすのに役立ちます。
- アプリの正常性を監視し、応答しないインスタンスを自動的に置き換える正常性チェック パスを構成します。 この構成は、可用性とパフォーマンスを維持するのに役立ちます。 詳細については、「 正常性チェックを使用した App Service インスタンスの監視」を参照してください。
CPU 使用率が高い場合のトラブルシューティング方法
CPU 使用率の高いシナリオでは、アプリで本当により多くのコンピューティング リソースが必要になる場合があります。 その場合は、アプリケーションが必要なすべてのリソースを取得できるように、より高いサービス階層へのスケーリングを検討してください。 その他の場合、CPU 使用量の多さは、不適切なループまたはコーディング方法によって発生している可能性があります。 CPU 使用量が増えている原因の調査は 2 つの部分からなるプロセスです。 最初にプロセス ダンプを作成し、次にプロセス ダンプを分析します。 詳細については、「Capture and analyze a dump file for high CPU consumption for Web Apps (Web アプリの増加した CPU 使用量のためのダンプ ファイルの取得と分析)」を参照してください。
メモリ消費量が多い場合のトラブルシューティング方法
メモリ消費量が多いシナリオでは、アプリで本当により多くのコンピューティング リソースが必要になる場合があります。 その場合は、アプリケーションが必要なすべてのリソースを取得できるように、より高いサービス階層へのスケーリングを検討してください。 その他の場合、コード内のバグがメモリ リークの原因になることがあります。 コーディングの手法では、メモリ消費量が増加する場合もあります。 メモリ使用量が多い原因の調査は 2 つの部分からなるプロセスです。 最初にプロセス ダンプを作成し、次にプロセス ダンプを分析します。 Azure サイト拡張機能ギャラリーのクラッシュ診断は、これらの手順の両方を効率的に実行できます。 詳細については、「Capture and analyze a dump file for intermittent high memory for Web Apps (Web アプリの断続的な増加したメモリ使用量のためのダンプ ファイルの取得と分析)」を参照してください。
PowerShell を使用して App Service Web アプリを自動化するにはどうすればよいですか?
PowerShell コマンドレットを使用すると、App Service Web アプリを管理および維持できます。 Azure Resource Manager ベースの PowerShell コマンドレットを使用して一般的なタスクを自動化する方法の詳細については、「PowerShell を使用してAzure App Serviceでホストされている Web アプリを自動化する」を参照してください。
注記
現在のオートメーション スクリプトの場合は、最新の Az.Websites モジュールを使用します。 古い AzureRM モジュールは非推奨です。
Web アプリのトラブルシューティングを行うために情報を収集する必要がある
Web アプリのイベント ログを表示する
Web アプリのイベント ログを表示するには、次の手順に従います。
-
Kudu の Web サイト (
https://*yourwebsitename*.scm.azurewebsites.net) にサインインします。 - メニューで、[デバッグ コンソール]>[CMD] を選択します。
- LogFiles フォルダーを選びます。
- イベント ログを表示するには、eventlog.xml の横にある鉛筆アイコンを選択します。
- ログをダウンロードするには、PowerShell コマンドレット
Save-AzureWebSiteLog -Name webappnameを実行します。
Web アプリのユーザー モード メモリ ダンプをキャプチャする
Web アプリのユーザー モード メモリ ダンプをキャプチャするには、次の手順に従います。
-
Kudu の Web サイト (
https://*yourwebsitename*.scm.azurewebsites.net) にサインインします。 - [プロセス エクスプローラー] メニューを選択します。
- [w3wp.exe] プロセスまたは [WebJob] プロセスを右クリックします。
- [Download Memory Dump] \(メモリ ダンプのダウンロード)>[Full Dump] \(完全ダンプ) を選択します。
Web アプリのプロセス レベルの情報を表示する
Web アプリのプロセス レベルの情報を表示するには、次の 2 つのオプションがあります。
Azure ポータルで次の操作を行います。
- Web アプリの [プロセス エクスプローラー] を開きます。
- 詳細を表示するには、[w3wp.exe] プロセスを選択します。
Kudu コンソールで以下を実行します。
-
Kudu の Web サイト (
https://*yourwebsitename*.scm.azurewebsites.net) にサインインします。 - [プロセス エクスプローラー] メニューを選択します。
- [w3wp.exe] プロセスの [プロパティ] を選択します。
-
Kudu の Web サイト (
App Service のローカル キャッシュ機能を使用しているときに、Web アプリのフォルダー構造にログ ファイルが見つからない
App Service のローカル キャッシュ機能を使用すると、App Service インスタンスの LogFiles フォルダーとデータ フォルダーのフォルダー構造に影響します。 ローカル キャッシュを使用すると、システムはストレージ LogFiles フォルダーとデータ フォルダーにサブフォルダーを作成します。 サブフォルダーの名前には、「一意識別子」+ タイムスタンプという命名パターンが使用されます。 各サブフォルダーは、Web アプリが実行されているか実行されている仮想マシン (VM) インスタンスに対応します。
ローカル キャッシュを使用しているかどうかを確認するには、App Service の [アプリケーションの設定 ] タブを確認します。システムがローカル キャッシュを使用する場合、アプリ設定 WEBSITE_LOCAL_CACHE_OPTION は Alwaysに設定されます。
失敗した要求トレースを有効にするには
失敗した要求トレースを有効にするには、次の手順に従います。
Azure Portal で、Web アプリに移動します。
[すべての設定]>[診断ログ] を選択します。
失敗した要求のトレース で、オン を選択します。
[保存] を選択します。
Web アプリ ブレードで [ツール] を選択します。
[Visual Studio Online] を選択します。
設定が On でない場合は、 On を選択します。
[Go] \(移動) を選択します。
Web.config を選択します。
system.webServer で、次の構成を追加します (特定の URL をキャプチャするため)。
<system.webServer> <tracing> <traceFailedRequests> <remove path="*api*" /> <add path="*api*"> <traceAreas> <add provider="ASP" verbosity="Verbose" /> <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" /> <add provider="ISAPI Extension" verbosity="Verbose" /> <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" /> </traceAreas> <failureDefinitions statusCodes="200-999" /> </add> </traceFailedRequests> </tracing>低速なパフォーマンスの問題をトラブルシューティングするには、この構成を追加します (キャプチャ要求が 30 秒を超える場合)。
<system.webServer> <tracing> <traceFailedRequests> <remove path="*" /> <add path="*"> <traceAreas> <add provider="ASP" verbosity="Verbose" /> <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" /> <add provider="ISAPI Extension" verbosity="Verbose" /> <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" /> </traceAreas> <failureDefinitions timeTaken="00:00:30" statusCodes="200-999" /> </add> </traceFailedRequests> </tracing>失敗した要求トレースをダウンロードするには、Azure ポータルで Web サイトに移動します。
[ツール]>[Kudu]>[Go] \(移動) を選択します。
メニューで、[デバッグ コンソール]>[CMD] を選択します。
LogFiles フォルダーを選択してから、W3SVC で始まる名前を持つフォルダーを選択します。
XML ファイルを表示するには、鉛筆アイコンを選択します。
パフォーマンスと回復性に関するその他の推奨事項
Application Insights と Azure Monitor を使用して、テレメトリ、依存関係トレース、ライブ メトリックなど、App Service アプリの完全なスタック監視を行います。
可用性ゾーンをサポートするリージョンにデプロイする場合は、ゾーンの冗長性を有効にして、リージョンの障害時の回復性を強化することを検討してください。 詳細については、「Azure App Service の信頼性」を参照してください。
App Service では、プラットフォームの信頼性を確保するために定期的なメンテナンスが行われます。 更新の動作 (特に App Service Environment v3) をより詳細に制御するには、アップグレードの優先設定を構成します。 詳細については、 Azure App Service のルーチン (計画済み) メンテナンスに関するページを参照してください。