はじめに
この記事では、App Service にデプロイした .NET Core アプリで発生しうる問題とそれを特定する手法について学んだことを記していきます。
対象とするシナリオは以下とします。
- 応答遅延
- 無応答
- クラッシュと例外
- High CPU
- High Memory
これらのシナリオは以下のドキュメントで挙げられています。
事前準備
ターゲットアプリ
問題が発生するアプリケーションを作成し、App Service(Windows, S1プラン) にデプロイしてあります。
下記のように上記のシナリオが発生しうる API を用意しました。
各種監視設定
ログ
取れるものはすべて取得しておく
-
-
自動復旧(Auto Heal) :
有効とする。 -
プロアクティブ CPU 監視
-
プロアクティブ自動復旧
それぞれ後述のシナリオ検証の際に詳細設定する
-
-
正常性チェック
正常性チェックについては今回は無効のままとする。インスタンスの入れ替わりが発生するとややこしいので、スケール数は 1 とし特定の 1 インスタンスで動作するように構成
https://learn.microsoft.com/ja-jp/azure/app-service/monitor-instances-health-check?tabs=dotnet
今回は実動作を見ながら分析するので未設定とする。実際にはログアラートやメトリックアラートを用いるべし。
応答遅延 シナリオの分析
プロファイラトレースを用いた分析
外部依存の遅延パターン
無応答 シナリオの分析
別記事で書く予定
クラッシュと例外 シナリオの分析
別記事で書く予定
High CPU シナリオの分析
別記事で書く予定
High Memory シナリオの分析
参考記事