4

こんにちは。Asp.Netで、テナントごとに個別のデータベースを使用するマルチテナントアプリケーションを開発しています。このアプリケーションでは、テナントごとに帯域幅の使用状況を監視する必要があります。

検索しようとしましたが、このトピックに関するヘルプはあまり見つかりませんでした。各テナントが独自のトップレベルドメインまたはサブドメイン、あるいはその両方の組み合わせを持つことができる一方で、各テナントに使用されている帯域幅を正確に監視したいと思います。

だから、利用可能なオプションは何ですか、私が考えることができるものは

  1. IISログ監視とは、各テナントの帯域幅を計算する個別のアプリケーションを意味します。
  2. アプリケーション内からテナントの各要求と応答をログに記録し、それに基づいて合計帯域幅使用量を計算します。
  3. 可能な場合は、いくつかのサードパーティコンポーネントを使用します

それで、これを行う他の方法がある場合にも、あなたは何が最善のアプローチになると思いますか。

4

3 に答える 3

6

わかりました、ここにアイデアがあります(私はテストしていません。それはあなたに任せてください)

global.asaxで、この関数のいずれ を使用します (有効な最終サイズを持つ関数を見つけます)。

Application_PostRequestHandlerExecute
Application_ReleaseRequestState

送信したサイズを取得します

Response.Filter.Length

を使用して呼び出しのファイル名を取得することに言及する必要はありません。

HttpContext.Current.Request.Path

この関数はリクエストごとに呼び出されるため、サイズを取得して残りを行うことができます。

ここで、最初にこのアイデアをテストして、それが機能するかどうかを確認し、おそらく改善する必要があることに注意する必要があります。サーバーでページを圧縮した場合、長さが正しくないため、圧縮する必要があるかもしれませんGlobal.asax が実際の長さになります。

この助けを願っています。

于 2010-03-30T07:25:22.967 に答える
0

ホストに基づいてトラフィックをセグメント化しようとすることは、私の経験では困難です。代わりに、各テナントにアプリケーション用の独自のIPを与えると、IPに基づいて帯域幅を監視するプログラムを見つけることができるはずです。

追加IISの構造は、すべてのテナントに対してすべてを統治する1つのWebサイトがあり、ログイン時にシステムが適切なデータベースに分岐するという構造ですか?その場合、すべてのテナントのサイトがまったく同じスキーマを持っている必要があり、スキーマの変更が必要になるようにアプリケーションを更新するときにすべてを同時に更新する必要があるという点で、バージョン管理に関して問題が発生する可能性があります。

あなたが持っているかもしれないもののように聞こえる別の構造は、各テナントが次のような独自のウェブサイトを持っているということです:

tenant1_site/appvirtualdir
tenant2_site/appvirtualdir
...

ここで、appvirtualdirポイントはすべてのテナントのサイトの同じ物理パスを指します。すべてのクライアントが同じアプリケーションバージョンを使用している場合、それらはすべて文字通り同じコードを使用しています。このシナリオとある種の認証がある場合、SSLのため、とにかくテナントごとに1つのIPが必要になります。SSLは、IP、ポート、およびホストにバインドする非SSLとは異なり、IPおよびポートにのみバインドします。その場合、IPに基づくトラフィックの監視は、ルーターまたはネットワークモニターを介して行うことができるため、より簡単で正確になります。

于 2010-03-30T05:37:59.687 に答える
0

IIS ログには既に要求サイズと応答サイズが含まれているため、それらを解析して日/週/月/その他の合計を計算するための小さなツールを開発するのはそれほど面倒ではないようです。

于 2010-03-30T05:33:20.337 に答える