0

IIS 7.0 以降。このセットアップにはロード バランサーは含まれません。要求されているファイルは、JQuery を使用して同期または非同期ロードを要求できる小さなスペーサー イメージです。このファイルは重要ではありません。これは、エンド ユーザーがこの IIS サーバーにアクセスして分析するための手段にすぎません。

IIS ログから訪問者のマシン名を取得する必要があります。現在のログには、クライアント IP アドレスが既に含まれています。問題は、私たちの環境では IP の寿命が短く、すぐにマシン名に解決しないと役に立たないことです。そのため、IP を訪問するためのマシン名がほぼリアルタイムで決定される必要があります。

これに取り組むための良いアプローチは何ですか。これらは私が見つけたオプションです...

1) IIS でリバース DNS ルックアップを有効にします -> http://www.expta.com/2010/01/how-to-enable-reverse-dns-lookup-in-iis.html。これはサーバーのパフォーマンスに影響を与えます。逆引き操作のコストが増加するため、ユーザーのリクエストが保留され、ページの読み込みが遅くなるのではないかと心配しています。

2) IP の正確なルックアップを実行し、ログにマシン名を書き込むことによってログを強化する IIS ログ モジュールを作成します。>> これにより、エンド ユーザーのリクエスト ターンアラウンド タイムが遅くなり、逆引き DNS ルックアップが原因でサーバーのパフォーマンスに影響を与える可能性があります。これは、マイクロソフトの組み込み機能に頼るのではなく、上記のポイント 1 を実行しているためだと思います。最後に、リアルタイムの逆引き DNS ルックアップがパフォーマンスに影響します。

3) 上記のポイント 1 または 2 と同じですが、ユーザーがアクセスしているページの HTML を変更して、(インライン呼び出しではなく) 非同期 JavaScript 呼び出しを使用して IIS がホストする画像ファイルをロードします。そうすれば、ユーザーはこの IIS リクエストが完了するのを待つ必要がなく、スペーサー イメージ リクエストの完了に依存することなく、残りのページ (ユーザーにとって重要なコンテンツ) を読み込むことができます。ただし、ブラウザは非同期の画像読み込み専用のスレッドを 1 つ使用するため、エンド ユーザーのパフォーマンスに影響を与えます。

4) デフォルトの IIS ロギングを使用して、リアルタイムでログインします。別の C# アプリに 5 分ごとにファイルを読み取らせ、追加された新しい行を検出し、それらを解析して IP を取得し、逆引きを実行してマシン名を見つけ、要求に応じてデータベースまたはフラット ファイルに記録します。逆に言えば、今はほぼリアルタイムでログインする必要があるということです。なぜなら、すぐにログに記録しないと、アプリケーションがログを読み取り、それを見つけて逆引きを行うまでに、IP が別のマシンに割り当てられている可能性があるからです。その上で。また、以前の読み取りなどの後に新しく挿入されたログエントリのみを読み取るために、ログファイルを読み取る複雑さに対処する必要があります。

5) http://www.iis.net/learn/extensions/advanced-logging-module/advanced-logging-for-iis-real-time-logging -> これは上記のポイント 2 と同じだと思いますが、 C# ではなく VC++ で記述されています。したがって、この方法にも同じ欠点があります

したがって、そこにあるすべての方法には欠点があるようです。問題を解決するための良い方法は何だと思いますか?

4

1 に答える 1

0

ルーティングの仕組みにより、IP をマシン名に逆にすることはできません。多くのマシンが同じ IP 経由で接続される可能性があります。

許容できる IP をマシン名にマップする方法を見つけた場合、1 つの方法として、単純にサイトにイメージを提供させ、通常のリクエスト ハンドラーで必要なすべての検出を実行させることができます。このようにして、ユーザーに関する詳細情報 (Cookie、認証ヘッダーなど) を取得することもできます。このアプローチは、IIS ログを構成するよりも柔軟な場合があります。

于 2012-12-03T16:35:35.887 に答える