AppServicesで500エラー発生してしまう場合があるときの対処方法
まえがき
Webアプリケーションを運用している時に、作成したアプリケーションコードのエラーハンドリング不足・何かしらの原因でAzure上のw3wp.exeがハングアップしてしまったなどの原因で、Web サーバーが500エラーが発生してしまう。そして、AppService/Functions/WorkerProcessを再起動するとなぜか正常に戻る、という状況が起こることがたまにあります。
そういった場合、アプリケーション側のログを見たりしてエラー原因がないかなどを調査していく必要があるのですが、取り急ぎの対策としてエラーが発生したらとりあえずサーバー(AppService/Functions)を再起動してみると、またアプリケーションが正常動作し始めたというケースが少なくありません。
では特定の状況になったらAzure側で自動再起動してもらおう!というのがこの機能がある背景となります。
AutoHealing機能とは
端的にいうと、事前に設定した閾値を超えた場合に、自動的にWorkerProcessを再起動 (Recycle) してくれる仕組みです。
少しでもアプリケーションを正常に保つ・システムの可用性を少しでも高めるために、設定しておいて損はないはずというものになります。
また、自動再起動してもらったら裏でエラーが起きてたことがわからなくなってしまうじゃないか!と思われるかもしれませんが、ちゃんと異常が起きたことはログに残りますし、Azure側が再起動してくれたのかどうかもログで確認できますので安心してください。
AutoHealing設定手順
1.Azure ポータルで該当の Web Apps 表示
2.[問題の診断と解決] を押下し、画面右側の “SUPPORT TOOLS” ? “Mitigate” 押下
3.Azure App Service Support ページが表示されるので、[Mitigate] タブ (既定です) にて “Autoheal” を ON にした上で、[Status Code] タブにて “Add new rule” 押下
4.Substatus および Win32Status は空白のままで、その他の項目を入力して ”Add” 押下
5.[Action] タブを押下後 "Recycle” 選択
6.“Update” ボタン押下
参考サイト
以上です。