0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Azure] App Serviceをスワップした時に、再起動しないケースがあった

Posted at

はじめに

Azure App Serviceでは2つのスロットをスワップすることで、ダウンタイム無しでリリースすることが出来ます。

そのスワップ中に「インスタンスが再起動する」と説明にあるのですが、実際は再起動しないケースがありました。

結論

マイクロソフト サポートに問い合わせた結果、
スロット間でアプリケーション設定に差異がない場合は再起動しない
ということが分かりました。

これは不具合などではなく正しい動作、とのことです。

何が起こったのか

運用中のアプリケーションではWinCacheを使用したキャッシュ戦略を構成しています。
アプリケーションをリリースする時は、スワップ時の再起動によりキャッシュデータがクリアされることを想定していました。

しかし、このキャッシュデータに変更が生じるアップデートをリリースした時、キャッシュデータが更新されていないと思われる現象が発生し、アプリケーションエラーによりサービスがダウンしました。

原因が判明するまでの経緯

スワップ時の再起動によりキャッシュデータがクリアされることを想定していました。

これは動作確認した結果を踏まえて手順を構成したのですが、実際に運用していて、スワップ時の挙動に疑問を感じることがありました。

そこで、そもそも「スワップ時にインスタンスが再起動する」という認識は正しいのか、という点から調べることにしました。

その結果、これらのことが判明しました。

  • スロット間でアプリケーション設定に差異がない場合は再起動しない
  • 当時のログから、再起動はされなかった
  • アプリケーション設定に差異は無かった

よって問題が起こった原因は「アプリケーション設定に差異は無かったのでスワップ中に再起動せず、キャッシュデータがクリアされなかった」という結論に至りました。

解決方法について

これから上記の事実を踏まえて「リリース時にキャッシュデータをクリアする方法」を改めて考えることになります。

現状の手順で考えるなら、適当な設定(バージョン番号やリリース日時)などで差異を作って再起動を強制する方法があると思います。
また再起動は手段でしかないので、カスタムウォームアップを利用するのも良さそうです。

ちなみに、スワップ中の再起動を強制するオプションのようなものは無い、とのことです。

おわりに

Webアプリケーションに関する情報はLAMP環境が多いので、AzureやIISに関する調査は苦労します。
何かの参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?