web-dev-qa-db-ja.com

ユーザーに影響を与えずにライブサイトを更新する方法は?

私の会社には、eコマースWebサイトがあり、このWebサイトを常に更新しています。

問題は、ユーザーコントロールページなど、ライブサイトに何かをプッシュするたびに、アプリケーションプールがリサイクルされ、Webサイトが再コンパイルされ、すでにサイトにいた顧客がサイトで遅延やエラーを確認することです。

このようなユーザーエクスペリエンスの低下や顧客の損失を防ぐにはどうすればよいですか? C#とIISを使用しています7。

1
Superman Coding

負荷分散を使用してエラーを防ぎ、更新中にサイトを維持します。これを機能させるには、稼働中のサーバーにトラフィックを送信するロードバランサーの背後に少なくとも2つのサーバーが必要です。サイトを更新する手順は次のとおりです。

  1. 「サーバーA」に、ロードバランサーがpingするURLでエラーページの提供を開始するように指示します。これは、このサーバーへのトラフィックの送信を停止するようロードバランサーに指示します。
  2. トラフィックがサーバーへのヒットを停止するまで30秒ほど待ちます。
  3. このサーバーのコードを更新します。
  4. Ping URLでエラーページの提供を停止するようサーバーに指示します。
  5. そのサーバーが再びトラフィックを取得するまで待ちます。
  6. 「サーバーB」で手順1〜5を繰り返します。
0
  1. サイトが稼働しているときは展開しないでください。展開時にアクティブなユーザーがいないように、サイトを停止する必要があります。サイトが非常にアクティブな場合、通常、ダウンタイムの事前通知が推奨されます。また、サイトがダウンしているときは、サイトがダウンしている理由とバックアップされる予定の時刻を必ず通知してください。

  2. サイト使用中のアクティブな期間中に展開しないでください。展開は、サイトの使用が最小限に抑えられている深夜に行う必要があります。営業時間外に働くのは好きではありませんが、これはコードのロールアウトの仕組みの一部です。

0
John Conde

IIS環境に固有:

here のように、変更のために新しいアプリケーションプールを作成することを検討できます。

この要素には、インターネットインフォメーションサービス(IIS)7サーバーで実行されているすべてのアプリケーションプールの構成設定が含まれます。アプリケーションプールは、1つ以上のワーカープロセスのグループを定義し、そのアプリケーションプールに割り当てられた1つ以上のアプリケーションへの要求を処理する共通設定で構成されます。アプリケーションプールを使用すると、一連のWebアプリケーションが1つ以上の同様に構成されたワーカープロセスを共有できるため、サーバーコンピューター上の他のWebアプリケーションからWebアプリケーションを分離する便利な方法を提供します。プロセス境界は各ワーカープロセスを分離します。したがって、あるアプリケーションプールのアプリケーションの問題は、他のアプリケーションプールのWebサイトまたはアプリケーションには影響しません。アプリケーションプールは、Webインフラストラクチャの信頼性と管理性の両方を大幅に向上させます。

その後、古いアプリケーションプールを後で削除して、サーバーのパフォーマンスを向上させます。

0
dan