asp.net中的带宽监控

时间:2010-03-30 05:29:14

标签: asp.net bandwidth multi-tenant

嗨,我们正在Asp.Net中开发一个多租户应用程序,每个租户都有单独的数据库,其中一个要求是监控每个租户的带宽使用情况,

我试图搜索但没有找到很多有关该主题的帮助,我们希望确切地监控每个租户使用多少带宽,而每个租户可以拥有自己的顶级域或子域或两者的组合。

那么可用的选项是什么,我能想到的可以是

  1. IIS日志监控是指一个单独的应用程序,它将计算每个租户的带宽。
  2. 在应用程序中记录租户的每个请求和响应,然后根据该用户计算总带宽使用情况。
  3. 使用某些第三方组件(如果有)
  4. 那么你认为什么是最好的方法,如果还有其他方法可以做到这一点。

3 个答案:

答案 0 :(得分:6)

好的,这是一个想法(我没有测试,留给你)

global.asax 上 使用此函数之一(找到具有有效最终大小的函数)

Application_PostRequestHandlerExecute
Application_ReleaseRequestState

并获取您使用

发送的尺寸
Response.Filter.Length

无需提及您使用

获取呼叫的文件名
HttpContext.Current.Request.Path

每个请求都会调用此函数,因此您可以获得自己的大小,然后完成剩下的工作。

这里必须注意,你需要先测试这个想法,看它是否有效,并且可能会对它进行改进,并且我已经知道如果你在服务器上压缩页面的长度是不正确的,也许你需要在Global.asax上压缩它以获得实际的长度。

希望得到这个帮助。

答案 1 :(得分:0)

好吧,既然IIS日志已经包含了请求大小和响应大小,那么开发一个小工具来解析它们并计算每天/每周/每月/不等的总数似乎不会太麻烦。 p>

答案 2 :(得分:0)

根据我的经验,尝试根据主机划分流量很困难。相反,如果您为每个租户提供他们自己的应用程序IP,您应该能够找到基于IP监控带宽的程序。

ADDITION IIS的结构是否有一个网站可以为所有租户统治所有租户并登录系统分叉到正确的数据库?如果是这样,这可能会在版本控制方面产生问题,因为所有租户的站点都必须具有完全相同的架构,并且在更新应用程序时需要同时更新所有版本,以便需要更改架构。

另一种听起来像你可能拥有的结构是每个租户都有自己的网站:

tenant1_site/appvirtualdir
tenant2_site/appvirtualdir
...

appvirtualdir指向所有租户网站的相同物理路径。当所有客户端具有相同的应用程序版本时,它们都使用相同的代码。如果您有此方案和某种身份验证,那么由于SSL,您将需要每个租户一个IP。 SSL将仅绑定到IP和端口,而非SSL将绑定到IP,端口和主机。如果是这种情况,那么基于IP的流量监控仍然会更简单,更准确,因为它可以在路由器上或通过网络监控器完成。