2011-02-17 68 views
1

我的公司托管由第三方编写的组件。每个组件都托管在其自己的AppDomain中,但可能与其他组件共享一个服务器。最近,我认为一个或多个写得不好的组件会导致错误操作并消耗太多资源,导致服务器崩溃。我想能够:监控AppDomain资源和设置阈值

  1. 确定哪些部件是有罪的一方,或者换句话说,确定每个组件的应用程序域是多少资源comsunimg(内存,操作系统手柄,CPU周期等)。

  2. 在appdomains上放置阈值,所以即使组件确实发疯了,它可以使用的资源也是有限的,它应该不会影响同一服务器上其他组件的性能。

任何人有任何想法?

回答

3

虽然这不是我的问题的完整答案,但确实满足了我的大部分要求。

  1. 因为我已经发现了AppDomain对象(http://msdn.microsoft.com/en-us/library/z9744cf9.aspx)的MonitoringIsEnabled,MonitoringSurvivedMemorySize,MonitoringSurvivedProcessMemorySize,MonitoringTotalAllocatedMemorySize和MonitoringTotalProcessorTime性能,这满足了我的一些要求从上述1。但我仍然想知道操作系统的手柄,如果可能的话,可以设置阈值。这是可行的吗?

  2. 如果无法设置资源使用的阈值,我想我可以使用上述属性连续监视域,如果检测到它超过了一定数量的内存或CPU时间,可以卸载它。