質問

私は、(外部ハードウェア経由で) 負荷分散され、ホーム ディレクトリが UNC パスである IIS サイトを持つレガシー ASP クラシック ソリューションを使用しています。現在、この設定には次の問題が存在すると言われています。

  1. UNC パスをホーム ディレクトリとして使用する場合、IIS のどこかに特定の種類のファイルを一定量まで「キャッシュ」する「インデックス」があり、制限 (デフォルトは 50) に達すると、後続のリクエストはキャッシュにないページは 404 を返します。
  2. UNC パスをホーム ディレクトリとして使用する場合、IIS サイトを起動すると、前述の「キャッシュ」がいっぱいになり始め、キャッシュがいっぱいになるまでサイト IIS が停止します。つまり、巨大なサイト (15,000 の .asp ファイル) が利用できなくなります。 IIS サイトの開始後最大 30 分。
  3. UNC パスをホーム ディレクトリとして使用する場合、サイトに対して一定数を超える同時リクエストが行われると、Windows は「サーバーごとのネットワーク BIOS コマンド制限」に達し、制限を超えるすべてのリクエストは IIS まで待機する必要があります。セッションを閉じます」をサーバーに送信します。制限は 100 ファイルであり、設定できないと言われています。

さて、これは少し奇妙に聞こえます。新しい Windows 2003 サーバーをデフォルト設定でセットアップし、サーバー上の共有を IIS サイトのホーム ディレクトリとして使用して、15,000 の .asp ファイルを含む ASP クラシック アプリケーションをホストするために使用すると、 実際にこれらの問題に遭遇するのでしょうか?もしそうなら、アーキテクチャを変更せずにそれらに対抗する方法はあるのでしょうか?

(明確にするために、「負荷分散」が重要である唯一の理由は、負荷分散がファイルがサーバー上の共有にある理由であるということです。負荷分散が必要ない場合は、ファイルはローカル ディスク上に存在する可能性があります。)

役に立ちましたか?

解決

はい、可能ですが、問題が発生する可能性があります。

ASP.NET は、ASPX、ASCX、およびその他のコンテンツ ページをアセンブリにコンパイルするときに、ファイルが変更されたときに再コンパイルできるように、それらの間の依存関係を監視するために多数の FileSystemWatcher を作成します。これらは NetBIOS リソースを消費します。

さらに、File.Exists または Directory.Exists 呼び出し、またはサイトのサービス パスに対するその他の種類の IO を実行するたびに、NetBIOS 制限に対する要求も増加します。

レジストリを使用して NetBIOS 制限をデフォルト値をある程度上回る値に設定することができます。

ディレクトリとファイルが比較的少ない小規模なサイトの場合、ASP.NET はコンパイルされたアセンブリから起動した後も実行し続けるため、UNC 共有から非常にうまく実行できます。ただし、追加するディレクトリやファイルの数が増えるほど、問題が発生する可能性が高くなります。

私たちは巨大なサイト (数百のディレクトリと ASPX/ASCX ファイル) を実行してみましたが、NetBIOS の制限に達するほど十分な URL にアクセスするまでは数分間は正常に動作しましたが、その後はすべてのページ ビューで例外が発生しました。結局、robocopy パブリッシング ソリューションを使用することになりました。

最終的には、サイトが十分に小さく、NetBIOS 設定が効果的に実行するのに十分な高さであるかどうかをテストする必要があります。コンパイルまたはアクセスできるすべてのものが少なくとも 1 回行われることを確認できるように、テスト サイトでスパイダーを使用することをお勧めします。

他のヒント

IIS と UNC 間のやり取りに関する直接の質問についてはよくわかりませんが、負荷分散が必要なほど忙しいサイトでは、ファイル共有以外のものを検討することをお勧めします。

IIS によってネットワーク経由でロードされる ASP (つまり、ファイル共有など)、パフォーマンスに悪影響(遅延)が発生します。

robocopy のようなものを使用して、負荷分散されたすべてのサーバーを中央マスターと同期させることをお勧めします。つまり、単一のマスター サーバー (または単一のマスターの場所) にデプロイし、ロード バランサーのプール内の各スレーブにファイルをロボコピーします。

これにより、あなたが説明した奇妙な UNC 問題が解決されるだけでなく、(ASP ページをロードする際のネットワーク ヒットが除去されるため) パフォーマンスも大幅に向上します。これを実行すると、かなり大幅なパフォーマンスの向上が期待できます。

回答 3 の場合、ネットワーク BIOS コマンド制限を変更できます。非常に簡単なレジストリ編集修正です。 http://support.microsoft.com/kb/810886/en-us

私自身もその特定の問題に遭遇しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top