我的公司托管由第三方撰写的组件。每个组件都托管在自己的AppDomain中,但可以与其他组件共享服务器。最近,我认为一个或多个写得不好的组件行为不端并消耗了太多资源,导致服务器崩溃。我希望能够:
确定哪个组件是有罪方,或者换句话说,确定每个组件的appdomain有多少资源(内存,操作系统句柄,CPU周期等)。
在appdomains上设置阈值,因此即使组件发疯,它可以消耗的资源也是有限的,并且它应该不会影响同一服务器上其他组件的性能。
有人有任何想法吗?
答案 0 :(得分:3)
虽然这不是我的问题的完整答案,但它确实满足了我的大多数要求。
我发现AppDomain对象(http://msdn.microsoft.com/en-us/library/z9744cf9.aspx)的MonitoringIsEnabled,MonitoringSurvivedMemorySize,MonitoringSurvivedProcessMemorySize,MonitoringTotalAllocatedMemorySize和MonitoringTotalProcessorTime属性,满足了上面1中的一些要求。但我仍然想知道操作系统句柄,如果可能的话,能够设置阈值。这可行吗?
如果无法设置资源使用的阈值,我想我可以使用上面的属性继续监视域,如果我检测到它超过一定的内存或CPU时间,则卸载它。 / p>