2017-02-07 5 views
2

Azure Appサービスで、私が誰かがコメントするのに十分なほど親切になることを期待しています。Azure App-Service Swapソースとデスティネーションの間で「Bounce」

再生手順(すべてのAzureのステップがポータルで行うことができます):

  • 例えば、(標準価格レベル、単一のインスタンスで結構です)アプリケーションサービスで、新しいWebアプリケーションを作成します。そのアプリケーションのためのmysite
  • Create a new staging slotmysite-staging
  • 展開コンテンツ//ONE
  • は、ファイル/スクリプト/テストでmysite-stagingに最低限のASP.NETアプリケーションを展開したファイル/scripts/test.jsとmysiteへの最低限のASP.NETアプリスワップ開始直後コンテンツ//TWO
  • Swap the deployment slots
  • を持っているの.jsは、(継続的にブラウザーの力リフレッシュを行うことによって)
mysite.azurewebsites.net/scripts/test.jsに移動して、スワップ操作中に返された内容を監視します私は実際に見る何

  • ある時点でのスワップ時に、シームレス/一貫/不可逆的//ONEから//TWO

へのコンテンツの変更:

    私が見ることを期待します

  • スワップ操作中に、内容が//ONE//TWOの間で "点滅"/"バウンス"します。スワップ操作が完了すると、動作が安定しており、//TWOは一貫して観察された行動は、すべてのトラフィックが新しいバージョンに行くことと言えるれる時間には単一のポイントが存在しないことを示唆している

返されます。ユーザーは、この「バウンス」段階で、ページの「V2」バージョンとで応答し、ページmysite.azurewebsites.netを要求

  • これは私に関する理由は、次のシナリオですCDNホストスクリプトへのリンクmycdn.com/scripts/test.js?v2?v2は新しいクエリ文字列)

  • ブラウザはCDNからスクリプトを要求し、そのスクリプトはmysite.azurewebsites.netからスクリプトを要求します。今回は、「バウンス」は応答をスクリプトのv1バージョンにします。
  • は、今、私たちは、その地域内のすべてのユーザーがページのV2バージョンでロードするCDNでキャッシュされたスクリプトのV1バージョンを持っている

私の質問:この「バウンス」動作が中にですスワップ操作は「設計上」ですか?もしそうなら、上の病理学的なケースを解決するために推奨されるアプローチは何ですか?

答えて

2

説明したような動作は現在設計されています。スワップを実行すると、データベース内のホスト名とサイトの間のマッピングが更新されますが、フロントエンドインスタンスはこれらのマッピングをキャッシュして30秒ごとに更新します。したがって、「バウンス」期間は30秒まで続く可能性があります。

私は現時点ではこの問題を解決する方法については推奨していませんが、これに対処する方法を検討します。

+0

「コンピュータサイエンスにはキャッシュの無効化と名前付けという2つの難しいことがあります」(Phil Karlton)スワップ操作のようなサウンドは、フロントエンドインスタンスのキャッシュエントリを無効にする必要があります。私はあなたが達成するためにこれが自明ではないと思います。私の場合の回避策は、CDNが正しい内容を保持していることを確かめるために、スワップ操作が終了した直後にCDNの内容を消去することです。 – sammy34

関連する問題